mam rubinowy tablicę i jest nil
ale kiedy sprawdzasz za pomocą nil?
i blank?
zwraca false
rubin tablica sprawdzanie zera tablicy
@a = [""]
@a.nil?
=> false
@a.empty?
=> false
Jak mogę sprawdzić, czy nil warunkiem, że zwróci true?
mam rubinowy tablicę i jest nil
ale kiedy sprawdzasz za pomocą nil?
i blank?
zwraca false
rubin tablica sprawdzanie zera tablicy
@a = [""]
@a.nil?
=> false
@a.empty?
=> false
Jak mogę sprawdzić, czy nil warunkiem, że zwróci true?
[""]
to tablica z pojedynczym elementem zawierającym pusty obiekt String. [].empty?
zwróci true
. @a.nil?
powraca false
, ponieważ @a
jest obiektem Array, a nie nil
.
Przykłady:
"".nil? # => false
[].nil? # => false
[""].empty? # => false
[].empty? # => true
[""].all? {|x| x.nil?} # => false
[].all? {|x| x.nil?} # => true
[].all? {|x| x.is_a? Float} # => true
# An even more Rubyish solution
[].all? &:nil? # => true
Ta ostatnia linia pokazuje, że [].all?
będzie zawsze powrót prawda, bo jeśli tablica jest pusta wtedy z definicji wszystkie jego elementy (bez elementów) spełniają każdych warunkach.
W Ruby, można sprawdzić jak to
[""].all? {|i| i.nil? or i == ""}
Jeśli jesteś na szynach, można zrobić
[""].all? &:blank?
p defined? "" #=> "expression"
p defined? nil #=> "nil"
Ten ""
myślisz jak nil
, faktycznie expression
. Spójrz na rozmiaru empty
tablicy i non-empty
tablicy jak poniżej, aby uzyskać więcej dowodów:
p [].size #=> 0
p [""].size #=> 1
Powiedział swój #nil?
i #empty
daje false
. Który jest oczekiwany.
'[" "]' to _nie_ zero. Co próbujesz zrobić? – Dogbert
Otrzymuję tablicę [""], jeśli nadchodzi ta tablica, nie powinna ona iść do wewnętrznej części bloku. –
Po prostu wykonaj 'if @ a == [" "]'? – Dogbert