developer tip

Ruby에서 변수가 문자열인지 확인

optionbox 2020. 7. 30. 10:22
반응형

Ruby에서 변수가 문자열인지 확인


다음보다 관용적 인 것이 있습니까?

foo.class == String

당신이 찾고 있다고 생각합니다 instance_of?. is_a?kind_of?파생 클래스의 인스턴스에 대해 true를 돌려줍니다.

class X < String
end

foo = X.new

foo.is_a? String         # true
foo.kind_of? String      # true
foo.instance_of? String  # false
foo.instance_of? X       # true

더 많은 오리 타이핑 방식은

foo.respond_to?(:to_str)

to_str 은 객체의 클래스가 실제 문자열의 자손이 아닐 수 있지만 객체 자체는 문자열과 매우 유사하다는 것을 나타냅니다 (문자열?).


넌 할 수있어:

foo.instance_of?(String)

그리고 더 일반적인 :

foo.kind_of?(String)

foo.instance_of? String

또는

foo.kind_of? String 

당신이 String그것의 상속 체인 어딘가 에서 파생 된 경우에만 관심이 있다면


다른 답변 외에도 Class는 === 메서드를 정의하여 객체가 해당 클래스의 인스턴스인지 테스트합니다.

  • o.class 오의 클래스입니다.
  • o.instance_of? co.class == c 인지 결정합니다.
  • o.is_a? c o c 의 인스턴스 또는 서브 클래스의 인스턴스입니까?
  • o.kind_of? * is_a?의 c 동의어
  • c === o 클래스 또는 모듈의 경우 * o.is_a? c * ( String === "s" 는 true를 반환합니다)

더 좋은 방법은 술어 메서드를 만드는 것입니다. "단일 제어 지점"도 저장됩니다.

class Object
 def is_string?
   false
 end
end

class String
 def is_string?
   true
 end
end

print "test".is_string? #=> true
print 1.is_string?      #=> false

더 오리 입력 방법;)

참고 URL : https://stackoverflow.com/questions/7749416/check-whether-a-variable-is-a-string-in-ruby

반응형