[#50354] 2.5.0で追加されたTime#atの引数について — Satoru Sakashita <sakasita@...>
坂下です。
8 messages
2017/12/16
[#50356] Re: 2.5.0で追加されたTime#atの引数について
— "Urabe, Shyouhei" <shyouhei@...>
2017/12/17
msecだとミリ秒かマイクロ秒か区別がつかないです。もっと良い名前があれば採用されるんじゃないでしょうか。
[#50357] Re: 2.5.0で追加されたTime#atの引数について
— Naotoshi Seo <sonots@...>
2017/12/18
横からすみません。一般的に mili second は ms、micro second は us と省略するので msec でも良いような気がします。
[#50394] [Ruby trunk Bug#14240] warn four special variables: $; $, $/ $\ — matz@...
Issue #14240 has been updated by matz (Yukihiro Matsumoto).
4 messages
2017/12/26
[#50396] Re: [Ruby trunk Bug#14240] warn four special variables: $; $, $/ $\
— Eric Wong <normalperson@...>
2017/12/26
Shouldn't English posts be on ruby-core instead of ruby-dev?
[ruby-dev:50336] [Ruby trunk Feature#14142] Add Method#===
From:
aycabta@...
Date:
2017-12-04 11:28:56 UTC
List:
ruby-dev #50336
Issue #14142 has been updated by aycabta (ayca bta).
```ruby
case value
when proc { |v| receiver.hoge(v) }
end
```
とすることもできますが、この issue にあるパッチで実現される方法のほうが Rubyish で良いと思います。
```ruby
case value
when receiver.method(:hoge).to_proc
end
```
とすれば今でも意図と同じものは可能ですが、微妙に Proc っぽいけど Proc じゃない Method のために #to_proc を呼び出しているだけであり、これは #=== が存在すればより良くなると思います。
余談: この件は issue を立てた本人から以前より聞いていました。2 週間ほど前、シアトルに行った時に @zenspider にこの件を相談したのですが、「Method にも #curry があってそれは Proc を返す。そういう Proc との交換可能性みたいなものも見られるのに Proc#=== があって Method#=== が無いのは確かに中途半端だね」という話をしました。確かに Method#=== を入れたほうがいい理由はいくらでもありそうに思います。
----------------------------------------
Feature #14142: Add Method#===
https://bugs.ruby-lang.org/issues/14142#change-68184
* Author: osyo (manga osyo)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
## 概要
Ruby の `Method` クラスに対する提案になります。
初めてこちらを利用するので内容や書き方などに対する問題があれば教えていただけると助かります。
## 提案
`Method#call` と同等の `Method#===` を定義する。
## 理由
`Proc` では `Proc#===` が `Proc#call` の同等のメソッドとして定義されています。
`Method` が `Proc` のように振る舞うことを期待するのであれば、`Proc#===` と同等の `Method#===` が定義されている方がよいのではないでしょうか。
## ユースケース
以下のようにして `Proc` と同様に `when` で使用する事が出来るようになります。
```ruby
# when で使用する
def check value
case value
when 0.method(:<)
"plus"
when 0.method(:>)
"minus"
when 0.method(:==)
"zero"
end
end
p check 3 # => "plus"
p check -6 # => "minus"
p check 0 # => "zero"
```
## 問題点
`Method#===` が `Object#===` を呼び出すことを期待しているようなコードであれば意図しない動作になる可能性があります。
---Files--------------------------------
add_method_eqq.patch (1.06 KB)
--
https://bugs.ruby-lang.org/