Aug. 31st, 2012

akuklev: (Default)
Вообще, я считаю, что выделение break и continue в Си это большая ошибка, вместо этого нужно было сделать правильный return. А именно, return с опциональным аргументом, чего именно мы хотим закончить. И называл бы я эту операцию не return, а finish.

Вместо break:
Loop: for (i <- 0 until size) {
  val v = data(i)
  if (v > maxValue) finish[Loop] v
}

Вместо continue:
for (i <- 0 until size) ProcessElement:{
  if (data(i) == 0) finish[ProcessElement]
  ...
}

Примитив finish (он же return) наиболее естественно реализуется при помощи исключений, так что можно считать его живущим в соответствующей монадке.

Read more... )

December 2016

S M T W T F S
    123
456789 10
11121314151617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 24th, 2025 06:40 am
Powered by Dreamwidth Studios