Boo始めました
Booの良い資料もないし、
どっかのサイト見ても英語ばっかりだし
本もないし、って感じでやろうかやらないか
ずっと考えてたら良いサイトあったのでやりました。
今日は匿名関数っていうのに感動しました。
//Boo >>>def f(s as string): ... return def(q as string): ... return s+q ... >>>f("Hello, ") Input15Module+$f$closure$1.Invoke >>>a=_ Input15Module+$f$closure$1.Invoke >>>a("World") 'Hello, World' >>>def make_i(n as int): ... return {x as int|x + n} ... ... >>>make_i(10) Input2Module+$make_i$closure$1.Invoke >>>a=_ Input2Module+$make_i$closure$1.Invoke >>>a(20) 30 //こういうことも...
というものです。
匿名関数はPythonに入ってないんじゃないかって思ったけど、
lambdaとは別なのかな〜って思ったり。
#Python >>> def f(s): ... return lambda q: s+q ... >>> f("Hello, ")("World") 'Hello, World'
正直lambdaとか一行関数のときにしかつかったことなくて
今初めてこんな使い方しました。なんか自分でも驚いた。
他に似てる所はぁ…
//Boo >>>[1,"2",3.0,"FOUR"] [1, '2', 3, 'FOUR'] >>>c=_ [1, '2', 3, 'FOUR'] >>>c[1] '2' >>>c[-1] 'FOUR' //Pythonならappendとかremoveだけど //Booなら >>>c.Add("HOGEHOGE") [1, '2', 3, 'FOUR', 'HOGEHOGE'] >>>c [1, '2', 3, 'FOUR', 'HOGEHOGE'] >>>c.Remove("2") [1, 3, 'FOUR', 'HOGEHOGE'] >>>c.RemoveAt(2) [1, 3, 'HOGEHOGE'] >>>c.Clear() >>>c [] //Pythonより豊富だと…? >>>for i in range(10): ... print(i) ... ... 0 1 2 3 4 5 6 7 8 9 >>>{"a":10,"b":20} {'a': 10, 'b': 20} >>>a=_ {'a': 10, 'b': 20} >>>a["a"] 10 >>>a["b"] 20 >>>l = [i for i in range(10)] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>>l.Collect({x as int | x%2==0}) [0, 2, 4, 6, 8] //これはPythonでいう /* >>> [i for i in range(10) if i%2==0] [0, 2, 4, 6, 8] な、はず。 */
##結論##
PythonとBooは似た兄弟のようです。