正規表現で変数束縛

id:ryugate:20080528 の続き・・・
ふとおもって、実験してみた。

scala> val ptn = "([0-9]+).*".r
ptn: scala.util.matching.Regex = ([0-9]+).*

scala> val ptn(x) = "123hoge"
x: String = 123

おぉ、出来るのね。

で、こっちは

scala> val ptn(x) = "hoge123"
scala.MatchError: hoge123
	at .<init>(<console>:6)
	at .<clinit>(<console>)
	at RequestResult$.<init>(<console>:3)
	at RequestResult$.<clinit>(<console>)
	at RequestResult$result(<console>)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke...

もちろん失敗しますね。