programing

변수가 Ruby의 문자열인지 확인합니다.

instargram 2023. 6. 1. 22:12
반응형

변수가 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개체의 클래스가 문자열의 실제 하위가 아닐 수 있지만 개체 자체는 문자열과 매우 유사(stringy?)함을 나타냅니다.

할 수 있는 일:

foo.instance_of?(String)

그리고 더 일반적인 것은:

foo.kind_of?(String)
foo.instance_of? String

또는

foo.kind_of? String 

그것이 에서 나온 것인지 아닌지만 신경 쓴다면.String그 유산 사슬의 어딘가에.

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

  • o.class의 종류.o.
  • o.instance_of? c의 여부를 결정합니다.o.class == c
  • c === o클래스 또는 모듈의 경우,o.is_a? c(String === "s"돌아온다true)
  • o.is_a? c아이즈o의 예.c아니면 하위 클래스 중에 하나라도?
  • o.kind_of? c와 동의어.is_a?

저는 술어법을 만드는 것이 더 좋은 방법이라고 생각합니다.이렇게 하면 "단일 제어 지점"도 저장됩니다.

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

반응형