0

1)

- @client.getAvatars(@accountName).each do |avatar|
  =avatar['deleted']

出力: false false true

2)

- @client.getAvatars(@accountName).each do |avatar|
 - if(avatar['deleted'] == 'false')
   =avatar['deleted']

空の出力

3)

- @client.getAvatars(@accountName).each do |avatar|
 - if(avatar['deleted'] != 'false')
   =avatar['deleted']

出力: false false true

なぜこんなに奇妙な動作をするのか理解できません。説明してもらえますか?

PS:私の作業バリアントは

- @client.getAvatars(@accountName).each do |avatar|
 - if(!avatar['deleted'])
   =avatar['deleted']

出力: false false

4

1 に答える 1

6

avatar['deleted']問題は、実際にはブール値を返しているのに、文字列(「false」という単語または「true」という単語)を返すと思うことだと思います。

このコードを試してください:

- @client.getAvatars(@accountName).each do |avatar|
    - if(avatar['deleted'] == false) # or, if(avatar['deleted'])
        =avatar['deleted']

falseは文字列ではなくキーワードであることに注意してください。これはブール値のフラグです。これで、最初のシナリオによりよく一致する出力が得られるはずです。

于 2012-06-15T14:43:14.963 に答える