def apply
(user
: String, host
: String
) = user +
"@" + host
def unapply
(input
: String
): Option
[(String, String
)] = { input.
indexOf("@") match { case x
if (x
> 0) => Some
((input.
substring(0, x
), input.
substring(x +
1))) }
}
}
"lispgovno@govnokod.ru" match { case Email
(user, host
) => println
("See user <" + user +
"> at domain <" + host +
">") case _ => println
("Well...") }
case Email
(user, host
) => println
("Wow... strange email") case _ => println
("OK, <lol> is not an email") }
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewogIG9iamVjdCBFbWFpbCB7CiAgICBkZWYgYXBwbHkodXNlcjogU3RyaW5nLCBob3N0OiBTdHJpbmcpID0gdXNlciArICJAIiArIGhvc3QKICAgIGRlZiB1bmFwcGx5KGlucHV0OiBTdHJpbmcpOiBPcHRpb25bKFN0cmluZywgU3RyaW5nKV0gPSB7CiAgICAgIGlucHV0LmluZGV4T2YoIkAiKSBtYXRjaCB7CiAgICAgICAgY2FzZSB4IGlmICh4ID4gMCkgPT4gU29tZSgoaW5wdXQuc3Vic3RyaW5nKDAsIHgpLCBpbnB1dC5zdWJzdHJpbmcoeCArIDEpKSkKICAgICAgICBjYXNlIF8gPT4gTm9uZQogICAgICB9CiAgICB9CiAgfQoKICAibGlzcGdvdm5vQGdvdm5va29kLnJ1IiBtYXRjaCB7CiAgICBjYXNlIEVtYWlsKHVzZXIsIGhvc3QpID0+IHByaW50bG4oIlNlZSB1c2VyIDwiICsgdXNlciArICI+IGF0IGRvbWFpbiA8IiArIGhvc3QgKyAiPiIpCiAgICBjYXNlIF8gPT4gcHJpbnRsbigiV2VsbC4uLiIpCiAgfQogICJsb2wiIG1hdGNoIHsKICAgIGNhc2UgRW1haWwodXNlciwgaG9zdCkgPT4gcHJpbnRsbigiV293Li4uIHN0cmFuZ2UgZW1haWwiKQogICAgY2FzZSBfID0+IHByaW50bG4oIk9LLCA8bG9sPiBpcyBub3QgYW4gZW1haWwiKQogIH0KfQ==