推 mars90226: 個人覺得Ruby挺強,有define_method, method_missing 12/24 01:19
→ mars90226: 還有send可以用,還可以改Class這個class去影響其他cla 12/24 01:20
→ mars90226: class 12/24 01:20
推 mars90226: Ruby在修改class方面的工具挺多,很輕易就可以做meta 12/24 01:22
→ mars90226: programming相關的事情,google一下就有很多文章介紹 12/24 01:22
→ mars90226: 一個最明顯的例子就是standard library中的OpenStruct 12/24 01:24
→ mars90226: person = OpenStruct.new; person.name = "Mars" 12/24 01:25
→ mars90226: person.name # => "Mars" 完全不用管有沒有name這個 12/24 01:26
→ mars90226: attribute在裡面,他內部就是用method_missing做的 12/24 01:26
→ NilPtr: Ruby真的很方便,難怪有些人喜歡用Ruby來做DSL 12/24 17:58
→ NilPtr: 而且Ruby的元編程非常的動態,之前好像看過能自己生出 12/24 18:00
→ NilPtr: 一串結構類似的method的方法,像是自己生一堆setter之類的 12/24 18:03
→ NilPtr: 是說我以前就摸過C++的TMP技術,直到最近學了FP類的語言 12/24 21:02
→ NilPtr: 才知道C++Programmer口中的TMP特例化根本就是FP的匹配模式 12/24 21:03
推 suhorng: 話說我覺得雖然很像, 不過應該有點差別; FP 的模式匹配會 12/24 21:08
推 suhorng: (通常)由上到下 matching, C++ 則不是 12/24 21:08
推 enthos: FORTH定義 : 1 type ; : 2 s" enthos" ; : 3 ." Hello," ; 12/30 23:06
→ enthos: 執行, 3 2 1 結果 Hello,enthos ok 12/30 23:06
→ enthos: 原本的加法 1 9 + . 10 ok 12/30 23:13
→ enthos: 把1定義成9,+定義成* : 1 9 ; : + * ; redefined + ok 12/30 23:13
→ enthos: 執行 1 9 + . 81 ok 12/30 23:13
→ DBoyX: lua, javascript 03/24 19:59