반응형
변수가 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
반응형
'programing' 카테고리의 다른 글
Azure에서 환경 변수를 정의하는 방법 및 위치 (0) | 2023.06.01 |
---|---|
파이썬의 헬로 월드 (0) | 2023.06.01 |
SQL Server 2008에서 루프하는 동안 작업 (0) | 2023.06.01 |
VB.net 숫자만 허용하려면 텍스트 상자 필요 (0) | 2023.06.01 |
루비에서 예외를 높이는 것과 예외를 던지는 것의 차이점은 무엇입니까? (0) | 2023.06.01 |