(u_u)

CrystalにおけるNull安全な呼び出し(Safe navigation operator)

Categories: [blog]
Tags: [crystal], [null safe], [.try $]

Kotlinの

val name = article?.author?.name

みたいな、Nullでなければ後のメソッドが実行されて、NullであればNullが返ってくるような演算子はCrystalにないのか調べたところ、ありました。
Object - github.com/crystal-lang/crystal

def try(&block) 

使用例としては、上のKotlinのコードと同等なのは

name = article.try (&.author).try (&.name)

でしょうか。
RubyにおけるSafe navigation operatorはlonely operatorと呼ばれているそうで、Crystalでも同等の構文を実装しないかという議論は以前あったようです。結果として導入されなかったようですね。→Implementation of "lonely operator" · Issue #2177 · crystal-lang/crystal
他言語でのSafe navigation operatorの一覧が英語版ウィキペディアにありました。→Safe navigation operator - Wikipedia