最近仕事でも趣味でもRubyやRuby on Railsをよく使います。
そこで気になったのが、真偽判定用のメソッドの呼び方です。
RubyとかRailsに特定の条件を満たしているか調べる為の、最後にハテナを付けるメソッドがありますよね。
そう、レシーバに対して.nil?
とか.present?
みたいに書いて、true
かfalse
が返ってくるあいつらです。
これらを総称して皆はなんて名前で呼ぶのか私、気になります!ということで軽く調べてみました。
真偽判定用のメソッドを知りたかった経緯
RailsのModelに下記のような感じでtrue
かfalse
が返ってくるメソッドを書いたりすると思うんですが、こういうメソッドを他の人に実装して欲しい時になんて言えばいいんだろう?と気になりました。
# app/models/user.rb class User GENIUS_IQ = 140 def genius? self.iq < GENIUS_IQ end end
「真偽を判定するためのメソッド作って」というのは分かりづらい!というかなんかダサイ!
みなさんこれらのメソッドなんて呼んでるんでしょうか?
叙述関数って言いたかった
ちなみに自分はいつも「叙述関数(じょじゅつかんすう)」とかって言っていました。
今日はじめて知りましたが、真偽判定用の叙述関数って言い方はC++以外ではしないんですね…。
(そもそもRubyなら「関数」じゃなくて「メソッド」っていうツッコミはナシにしても)
叙述関数は一般的な言葉だと思ってました。
※「叙述関数」のGoogle検索が17000しかヒットしなくてびっくりしました…。
ドキュメントで調べてみる
真偽値判定のメソッドの呼び方をRubyドキュメントで調べてみる。
以下Rubyの公式ドキュメントを見てみたところ次のような記述がありました。
メソッド呼び出し(super・ブロック付き・yield) (Ruby 2.3.0)
慣習として、述語(真偽値を返すメソッド)には ? を、同名の(! の無い)メソッドに比べてより破壊的な作用をもつメソッド(例: tr と tr!)には ! をつけるようになっています。
うん。なるほど。
Rubyでは『述語』と言うそうです。
そういえば、確か関数型言語とかでもそう言ってた気がする。
それではこれからはRailsで何か真偽判定用のメソッド作ってもらうときには、「述語作って〜」って言うことにします。
うーん。若干余計に伝わりづらい気がするけど、まぁいいか…。