Sollang으로 만든 다양한 코드가 어떻게 보여지는지를 댓글로 이어 달아보려고 합니다.
2개의 좋아요
첫 번째 구구단입니다.
main {
2..9 -> each dan {
"$(dan)단" -> println
1..9 -> each {
"$dan × $it = $(dan * it)" -> println
}
println()
}
}
출력은 다음과 같이 됩니다.
2단
2 × 1 = 2
2 × 2 = 4
2 × 3 = 6
2 × 4 = 8
2 × 5 = 10
2 × 6 = 12
2 × 7 = 14
2 × 8 = 16
2 × 9 = 18
3단
3 × 1 = 3
3 × 2 = 6
3 × 3 = 9
3 × 4 = 12
3 × 5 = 15
3 × 6 = 18
3 × 7 = 21
3 × 8 = 24
3 × 9 = 27
4단
4 × 1 = 4
4 × 2 = 8
4 × 3 = 12
4 × 4 = 16
4 × 5 = 20
4 × 6 = 24
4 × 7 = 28
4 × 8 = 32
4 × 9 = 36
5단
5 × 1 = 5
5 × 2 = 10
5 × 3 = 15
5 × 4 = 20
5 × 5 = 25
5 × 6 = 30
5 × 7 = 35
5 × 8 = 40
5 × 9 = 45
6단
6 × 1 = 6
6 × 2 = 12
6 × 3 = 18
6 × 4 = 24
6 × 5 = 30
6 × 6 = 36
6 × 7 = 42
6 × 8 = 48
6 × 9 = 54
7단
7 × 1 = 7
7 × 2 = 14
7 × 3 = 21
7 × 4 = 28
7 × 5 = 35
7 × 6 = 42
7 × 7 = 49
7 × 8 = 56
7 × 9 = 63
8단
8 × 1 = 8
8 × 2 = 16
8 × 3 = 24
8 × 4 = 32
8 × 5 = 40
8 × 6 = 48
8 × 7 = 56
8 × 8 = 64
8 × 9 = 72
9단
9 × 1 = 9
9 × 2 = 18
9 × 3 = 27
9 × 4 = 36
9 × 5 = 45
9 × 6 = 54
9 × 7 = 63
9 × 8 = 72
9 × 9 = 81
최초 한글이 깨졌는데 이유는 윈도 콘솔의 기본 인코딩은 UTF-8이 아니기 때문에 콘솔 인코딩을 감지해서 적절하게 잘 출력되도록 패치한 후에 한글이 잘 출력됨을 확인할 수 있었습니다.
함수 호출의 특징은 → func 의 경우 괄호를 사용하지 않는 것이 기본 문법입니다.
"$dan × $it = $(dan * it)" -> println
하지만 줄넘기기의 경우 인자없는 println의 호출은 괄호를 넣어야 제대로 컴파일되게 했습니다.
println()
1개의 좋아요
이런 느낌으로 LINQ 스타일로도 구구단 출력이 가능합니다.
import std.sequence
main {
2..9
-> flatMap(1..9) dan, multiplier {
multiplier == 1 -> if {
"$(dan)단" -> println
}
"$dan × $multiplier = $(dan * multiplier)" -> println
multiplier == 9 -> if {
println()
}
}
}
이런 느낌으로도 가능합니다.
import std.sequence
main {
2..9
-> beforeEach dan {
"$(dan)단" -> println
}
-> afterEach dan {
println()
}
-> flatMap(1..9) dan, multiplier {
"$dan × $multiplier = $(dan * multiplier)" -> println
}
}
또는 이렇게,
import std.sequence
main {
2..9
-> beforeEach dan {
"$(dan)단" -> println
}
-> afterEach dan {
println()
}
-> flatMap(1..9) dan, multiplier {
"$dan × $multiplier = $(dan * multiplier)"
}
-> each line {
line -> println
}
}
1개의 좋아요
import std.sequence
main {
0 => scanned!
1..10
-> beforeEach outer {
}
-> flatMap(1..10) outer, inner {
outer * 10 + inner
}
-> tap value {
scanned! + 1 => scanned!
}
-> skip(3)
-> take(4)
-> each value {
"$value" -> println
}
"scanned=$(scanned!)" -> println
}
14
15
16
17
제가 원하는 흘러가는 코드가 조금씩 완성되어 갑니다.
2개의 좋아요