programing

Ruby 클래스 유형 및 사례 문

css3 2023. 6. 14. 22:05

Ruby 클래스 유형 및 사례 문

사이의 차이점은 무엇입니까?

case item.class
when MyClass
  # do something here
when Array
  # do something different here
when String
  # do a third thing
end

그리고.

case item.class
when MyClass.class
  # do something here
when Array.class
  # do something different here
when String.class
  # do a third thing
end

어떤 이유에서인지, 첫번째 것은 때때로 작동하지만 두번째 것은 작동하지 않습니다. 그리고 다른 것은, 두번째 것은 작동하고 첫번째 것은 작동하지 않습니다. 왜 그럴까요?어떤 것이 그것을 하는 "적절한" 방법입니까?

다음을 사용해야 합니다.

case item
when MyClass
...

저도 같은 문제가 있었습니다."case when"에서 Errno::ECONNRESET 클래스를 잡는 방법?

예, Nakilon이 맞습니다. 3qual === 연산자가 다음에 제시된 객체에서 어떻게 작동하는지 알아야 합니다.when인 루비

case item
when MyClass
...
when Array
...
when String
...

정말로

if MyClass === item
...
elsif Array === item
...
elsif String === item
...

이 경우가 3등 방법을 부르는 것임을 이해합니다.MyClass.===(item)예를 들어), 그리고 그 방법은 당신이 원하는 모든 것을 하도록 정의될 수 있고, 그리고 당신은 정확하게 사례 진술을 사용할 수 있습니다.

사용할 수 있는 항목:

case item.class.to_s
    when 'MyClass'

...다음 트위스트가 불가능한 경우:

case item
    when MyClass

그 이유는case사용하다===연산자가 설명하는 관계교환적이지 않습니다.예를들면,5이다.Integer그러나 그것은Integer a 5당신은 이렇게 생각해야 합니다.case/when.

Ruby에서 클래스 이름은 형식의 객체를 참조하는 상수입니다.Class특정 클래스를 설명합니다.그것은 그 말을 의미합니다.MyClass루비에서 말하는 것과 같습니다.MyClass.class자바로

obj.class유형의 개체입니다.Class클래스 설명obj.한다면obj.class이라MyClass,그리고나서obj다음을 사용하여 작성되었습니다.MyClass.new(전화통화중입니다. MyClass유형의 개체입니다.Class다음을 사용하여 생성된 개체를 설명합니다.MyClass.new.

MyClass.class의 클래스입니다.MyClassobject(유형 객체의 클래스)Class다음을 사용하여 생성된 개체를 설명합니다.MyClass.new. 다른 말로 하면,MyClass.class == Class.

그것은 당신의 성격에 달려있습니다.item변수.예를 들어 객체의 인스턴스인 경우

t = 5

그리고나서

t.class == Fixnum

하지만 그것 자체가 수업이라면 예를 들어.

t = Array

그러면 그것은 될 것입니다.Class목적어, 그래서

t.class == Class

편집: 내 대답이 틀릴 수 있으니 Nakilon이 언급한 "case when"에서 Errno::ECONNRESET 클래스를 잡는 방법을 참조하십시오.

언급URL : https://stackoverflow.com/questions/3908380/ruby-class-types-and-case-statements