Ruby 引爆装置数据帧上的If语句
使用生成卡片 我的csv布局非常简单。其中一个字段可能为空-“”,根据该字段,我必须调用各种函数。我怎样才能真正做到这一点Ruby 引爆装置数据帧上的If语句,ruby,squib,Ruby,Squib,使用生成卡片 我的csv布局非常简单。其中一个字段可能为空-“”,根据该字段,我必须调用各种函数。我怎样才能真正做到这一点 一直在尝试像data['empty_field'].empty?这样的选项,这会给我带来一些奇怪的东西——总是认为它不是空的。我假设通过这种方式得到“empty_field”对象数组,当然,它不是空的。但我如何获得引爆装置当前正在迭代的对象呢?我已经实现了我想要的。但我认为这是肮脏的黑客,而不是解决方案。 我必须编辑我的C#工具以发出power字段的空字符串,其中type3
一直在尝试像
data['empty_field'].empty?
这样的选项,这会给我带来一些奇怪的东西——总是认为它不是空的。我假设通过这种方式得到“empty_field”对象数组,当然,它不是空的。但我如何获得引爆装置当前正在迭代的对象呢?我已经实现了我想要的。但我认为这是肮脏的黑客,而不是解决方案。
我必须编辑我的C#工具以发出power
字段的空字符串,其中type3
字段将为空。通过这种方式,我在Ruby代码中去掉了if/else,它按预期工作
然而,问题仍然存在,我不能把我的头围绕Ruby
附上我的最新尝试
pr = dataNor['type3'].map do |a|
a == 'data/ui/type3/placeholder.png' ? true : false
end
if pr == true
text str: dataNor['power'], x: '5.5mm', y: '6.5mm', font_size: 25, color: :white, align: :center, valign: :middle, width: '10mm', height: '10mm', font: 'Warnock Pro SmBd Caption'
else
png file: dataNor['type3']
end
通过打印pr
我知道检查正在工作,只在定义了type3
的地方导致false,但是if/else
永远不会调用if body,只在应该调用的地方调用else body
更新:
这个问题似乎已经被这个结构解决了:
dataNor['type3'].map do |a|
if a == 'data/ui/type3/placeholder.png'
text str: dataNor['power'], x: '5.5mm', y: '6.5mm', font_size: 25, color: clr, align: :center, valign: :middle, width: '10mm', height: '10mm', font: 'Warnock Pro SmBd Caption'
else
png file: dataNor['type3']
end
end
“给我一些奇怪的东西”是一个简洁的故事,但是对于一个技术性的回答,请包括你得到的准确的错误文本。它不会产生任何错误,什么是奇怪的-我已经在你引用的问题后面加上了这个问题。“如果”从来没有发生过,你能给我们一些代码来重现这个问题吗?像
数据
看起来像什么?数据['empty_field']
包含什么<代码>检查通常可以告诉您。如果它有空格,它可能不会被认为是“空的”,只是空白。在Rails中,您有.present?
和.blank?
,但否则您可能需要执行数据['empty齌field']和.match(/\S/)
来查找至少一个非空格字符。标题、描述、图片、派系、电源、类型1、类型2、类型3、底部的“bаааааажаааа”,data/textures/nor\u vernon.png,data/ui/ribbon/nor\u tape.png,10,data/ui/type1/melee.png,data/ui/type2/type\u hero.png,data/ui/bottom/bottom\u hero.png
这是从csv文件加载到DataFrame变量data
的典型示例。'empty_field'
在标题中是type3,在包含的示例中是emptySo,所以应该是空字符串,但您能确认吗?像零宽度空格和其他Excel垃圾之类的鬼鬼祟祟的东西会把事情搞砸。您可以使用str.bytes
转储字符串,以了解其实际包含的内容。您不需要将布尔值转换为带三元的布尔值,比较=
就可以了。同样地,如果pr
就足够了。我已经按照您的建议编辑了它,现在,如果在应该调用body时调用了它,但是否则
body不是。我可能遗漏了Ruby的一些内容,第一次使用itRemembermap
总是会返回一个数组,所以如果您想查看是否没有匹配项,.any?
或空?
。我想你想要的不是一系列true
或false
实体,这是map
所做的,而是dataNor['type3']。有吗?{a | a='.'''}
就我所理解的#any
做什么-不。dataNor['type3'].map do | a |
做它似乎做的事情。它给出了当前迭代csv行中的字段。我使用相同的结构切换文本的颜色,效果很好。然而,这里并不是说map
将返回像[true,false,true,…]
这样的数组,它永远不会==true
,因此if
将无法按预期工作。您需要any吗?