Help us understand the problem. What is going on with this article?

悲観的バージョン演算子(~>)とは何か?

悲観的バージョン演算子(~>)

Rubyでの開発を行っていると一度は出会う 悲観的バージョン演算子(~>)(Pessimistic Operator)。Gemfileで例えば~>0.7.7などと記述されているのを見て、初めての方だと混乱される方も多いだろうし、少し慣れている方でもついググってしまう方もおられるかもしれない。そこでここでは初めての方には一先ず理解してもらうべく、初見ではない方にはもうググらなくて済むことを願って解説していければと思います。

x.x.xの例

x.x.xの形式でバージョン指定が行われている場合、例えば下記の様にGemfileが記述されている場合を考えてみる。
gem 'rails', '~>4.2.6'
これは結論から言うと4.2.6 <= 'rails' < 4.3となる。

ではどの様に考えれば、この結論に至るのかを順を追って説明したい。

まずは最小値である下限から考えてみる

上記の例を使用するとこの場合の下限は4.2.6となることが分かる。これでまずは下限が決まった。簡単。

次にどこまでが上限であるかを考えていく

同じく上記の例を使用すると、まずは4.2.6の1番右端にある6を削ってみる。そうすると4.2になる。
それから4.20.1を加算してあげる。つまり4.3。(深く考えずに機械的に1番小さい桁に1を足せば良い。)
この4.3より小さい値つまりは4.3未満であればOK。

結果

4.2.6以上4.3未満

x.xの例

次にx.x.xの例だけではイマイチ理解出来なかった。若しくは別のパターンも見てみたい方々の為にもう一例。
Gemfileに下記の通り記述されていた場合を考えてみる。
gem 'rails', '~>4.2'
これも結論から言うと4.2 <= 'rails' < '5'となる。
では同じ要領で見ていこう。

まずは下限を決める

これは~>で指定されている4.2で決まり。後は上限だけ。

どこまでが上限になるか考える

4.2の1番右端の数字を削る。ここでは2。結果4となる。
次に1番小さい桁に1を足してあげると5が導かれる。つまり5未満であればOK。

結果

4.2以上5未満

まとめ

悲観的バージョン演算子が登場したら下記の手順を思い出して頂ければ、今後慌てずググらず対応出来る。
1. 下限を決める
2. 上限を決める(1番右端の数字を削って1を加算した数値未満)

y-natsui
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした