Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Shoes:Element.width返回0_Ruby_Shoes - Fatal编程技术网

Ruby Shoes:Element.width返回0

Ruby Shoes:Element.width返回0,ruby,shoes,Ruby,Shoes,我不明白,如果宽度非零的元素返回0,为什么width函数会在所有元素上实现。下面为我返回0 Shoes.app do p = para "My width is: " para p.width end 为什么呢?(app.width不返回0)问题在于,在绘制para对象时,它的大小是动态确定的。在创建第二个段落时,实际上还没有布置任何内容,因此尚未设置宽度。您可以看到,在绘制后访问宽度的效果与预期一致: Shoes.app do p = para "My width is: "

我不明白,如果宽度非零的元素返回0,为什么width函数会在所有元素上实现。下面为我返回0

Shoes.app do
  p = para "My width is: "
  para p.width
end

为什么呢?(app.width不返回0)

问题在于,在绘制para对象时,它的大小是动态确定的。在创建第二个段落时,实际上还没有布置任何内容,因此尚未设置宽度。您可以看到,在绘制后访问宽度的效果与预期一致:

Shoes.app do
  p = para "My width is: "
  @para = para p.width
  button 'Get Width' do
    @para.text = p.width
  end
end
解决此问题的方法是使用start方法,该方法在第一次绘制包含槽时调用:

Shoes.app do
  p = para "My width is: "
  width = para p.width
  start do
    width.text = p.width
  end
end

我明白了。非常感谢您的回复。