{{link /mce/index index}}

!サブルーチン応用
{{link /mce/control 制御構文}}でも説明しましたが、サブルーチンにはさらにもうひとつ機能があります。

>> mce3
def("hoge")
 circle($0)

hoge(0.5)
hoge(1)
<<

>>
def("hoge")
 circle($0)

hoge(0.5)
hoge(1)
<<

このように関数hogeは引数を取ることができます


さらに
>>
fuga(0.5)
 circle(1)
 circle(0.5)
<<

みたいな呼び出しをしたときに、このfugaの下にぶら下がっているものを取り出したいですよね。

ということでできるようにしました。
まだバグがあるっぽいですが普通に使っている分には遭遇しないかと。近いうちに直します。


>> mce3
def("fuga")
 ext($0)

fuga(0)
 circle(1)
 rect(1)
<<
>>
def("fuga")
 ext($0)

fuga(0) // 複数行版choiceみたいなもの?
 circle(1)
 rect(1)
<<

関数ext(n)はそのdefの呼び出し元の下にぶら下がっているn番目の要素を返します。(nは0から)
またext(-1)で、呼び出し元の下にぶら下がっている要素の数を返します。

!例
>> mce3
def("lwssfs") // 線の太さと色と塗りを一気に指定
 lw($0)
  ss($1)
   fs($2)
    loop(ext(-1))
     ext($0)

lwssfs(4,"blue","red") //使ってみる 便利!
 circle(0.5)
 shift(0.5,0)
  rect(0.2)
 shift(0,0.5)
  poly(5,2,0.5)
<<

>>
def("lwssfs") // 線の太さと色と塗りを一気に指定
 lw($0)
  ss($1)
   fs($2)
    loop(ext(-1))
     ext($0)

lwssfs(4,"blue","red") //使ってみる 便利!
 circle(0.5)
 shift(0.5,0)
  rect(0.2)
 shift(0,0.5)
  poly(5,2,0.5)
<<

5643382
wiki
1371359253