Edited at

あなたも使ってみたくなる! いろんな言語のかっこいい書き方まとめ

いろんな言語で、思わず「かっこいい!」「使ってみたい!」と思ってしまう書き方をまとめました。


Swift


Optional と if

Swift といえば Optional ですよね。

if文と合わせて書くと気持ちいいことこの上ない Optional ですよね

// specialObject.value が Optional 型だったとすると

if let value = specialObject.value {
// nilじゃないときの処理
...
}

かっこいい!!


  • 変数定義

  • nilかどうかのif

  • 代入された変数にはOptionalが取れる

という3つの挙動を同時にやってて、しかもそれをここまであっさりと書いてしまう鬼畜ぶり。思わず惚れちゃいそうになりますよね。


Enum と switch

Swift といえば Enum のことも忘れてはいけません。

例えば Enum を下記のように定義しているとします。

enum Result<Value> {

case success(Value)
case failure(Error)
}

例えばこのクラスを返すメソッドがあるとすると、こんな書き方ができます。

load { result in

switch result {
case .success(let data):
// 成功時の処理
case .failure(let error):
// 失敗時の処理
}
}

result の Enum の値を switch 文で分岐しつつ、どの値かによって返ってくるデータを変数に入れるという、なぜかわからないがすごいことをしている気分になれる書き方ですね。

これを使いこなせたら、気持ちいいでしょうね!


参考URL:https://www.swiftbysundell.com/posts/the-power-of-result-types-in-swift



Python

Python といえばリスト内包表記でしょう。

他の言語でいういわゆる map 関数のような動作を for 文でやるという奇想天外な発想。

[ i*2 for i in nums ]

for 文の両側に カッコを付けると map みたいに動くんですね。

さすがPython! おれたちにできない事を平然とやってのけるッ!

そこにシビれる!あこがれるゥ!!

しかもこれ、 if 文がつけれちゃいます。

[ i*2 for i in nums if i % 2 == 0]

みたいな。

なにこの書き方。天才かよ。

さらに

[ i*2 if i % 2 == 1 else i*3 for i in nums ]

else までつけれちゃいました。

鬼か。1行で書かないと死ぬ病気か。

Python には、 mapreduce なんて使わず何がなんでも for 文でやってしまいたいという「スゴ味」があるッ!

どうですか? 書きたくてうずうずしてきましたね。


Javascript

Javascript からは、ES6 で導入された書き方でかっこいいものを紹介します。

まずは Shorthand property names ですね。

// すでに変数 a, b が定義されているとする

{ a, b }
// => { a: a, b: b } と同義

変数がすでに定義されていると key を省略できるんですね。

スマートですよね。効率化したいという精神がにじみ出てます。

あと、変数への分割代入も捨てがたいです。

// obj = { a: 'are', b: 'boa', c: 'core' } とする

let { a, b } = obj;

最初見たときは、何してんだこれ、って思いましたが、慣れると気持ちいいんですよね。

書きながら フフッ とニヤけてしまうこと受け合いです。


Ruby

Rubyは構文ではなく、メソッドです。残念ながら構文としてはそれほどかっこいい構文が思いつきませんでした。


tap

Ruby で大好きなメソッドです。 tap メソッドは、実行したオブジェクトをリターンしつつ、そのオブジェクトを yield するというメソッドです。

理解するまでは、「ん? よくわからんからもう一度説明して」を無限ループしてしまうメソッドですね。

例えば、このように使います。

# どこかのメソッド内での文

return params.tap { |p| p.test = 'aaa' if p.a.nil? }

params を返しつつ、 params の内容を更新しているというものです。

このやったった感、たまりませんね。


then

RubyKaigi2018 ではこのネーミングをつけたMatzへのバッシングが多かった then です。

then は実行したオブジェクトを yield しつつ、 ブロックの返り値を返します。

これを使うと気持ちよく chain ができます。

1.then { |x| x + 1 }.then { |y| y + 1 }

=> 3

こんな具合にどんどん連鎖できるわけですね。

メソッド chain ってやるだけでなんかできるエンジニア感が出て俺スゲーって謎の優越感に浸れるんですよ。

正直たまらん


終わりに

どうでしたか?

いろんな言語を書きたくなりましたよね。

次の機会に他の言語のかっこいい書き方も紹介していきたいと思います。

また、俺はこんなかっこいい書き方知ってるぜ!という方々、 ぜひコメント欄で暴れていただきたい