반응형
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? c 는 o.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
반응형
'developer tip' 카테고리의 다른 글
PHP에서 배열 요소의 키를 재설정 하시겠습니까? (0) | 2020.08.02 |
---|---|
시간을 00:00:00으로 설정 (0) | 2020.07.30 |
Intellij IDEA 2016.1.1의 콘솔에 Gradle 출력 표시 (0) | 2020.07.30 |
jQuery 슬라이드 왼쪽 및 표시 (0) | 2020.07.30 |
LIMIT 절에 bindValue 메소드를 적용하는 방법은 무엇입니까? (0) | 2020.07.30 |