我在两者之间做出决定时遇到了麻烦.它们看起来都很棒,但我想知道哪个更容易控制.
你的这些插件有什么经验?你会推荐哪个?
ruby authentication ruby-on-rails restful-authentication authlogic
o = Object.new
o.instance_eval { @str = "foo" }
p o # => #<Object:0x5dd1a0 @foo="bar">
Run Code Online (Sandbox Code Playgroud)
这很好.p使用对象作为参数调用将打印对象inspect方法的输出.但是,不幸的是,如果对象有一个to_s方法被覆盖,那么它将输出该输出:
class << o
def to_s; @str; end
end
p o.to_s # => "foo"
p o # => foo
Run Code Online (Sandbox Code Playgroud)
所以要解决这个问题,我们必须inspect在对象上定义一个方法:
class << o
def inspect; "blah"; end
end
p o # => "blah"
Run Code Online (Sandbox Code Playgroud)
如何使我的对象的inspect方法输出默认的Ruby方式,如我的第一个代码示例的第3行所示?
我最接近的是下面的,但我不确定它是否正确
class << o
def inspect
vars = instance_variables.collect { |v| v.to_s << "=#{instance_variable_get(v).inspect}"}.join(", ")
"#<#{self.class}:0x#{object_id} #{vars}>"
end
end
Run Code Online (Sandbox Code Playgroud) 这可能吗?
def block_to_s(&blk)
#code to print blocks code here
end
puts block_to_s do
str = "Hello"
str.reverse!
print str
end
Run Code Online (Sandbox Code Playgroud)
这将打印终端的跟随:
str = "Hello"
str.reverse!
print str
Run Code Online (Sandbox Code Playgroud) 在下面的父类下面定义一个子类是常规的吗?
class Element
class Div < Element
end
class Paragraph < Element
end
end
Run Code Online (Sandbox Code Playgroud)
或者使模块包含子类更合适?
class Element
end
module Elements
class Div < Element
end
class Paragraph < Element
end
end
Run Code Online (Sandbox Code Playgroud)
或者在模块中创建"基础"类并在同一模块中定义子类?
module Element
class Base
end
class Div < Base
end
class Paragraph < Base
end
end
Run Code Online (Sandbox Code Playgroud)
或者强制命名约定更好?
class Element
end
class DivElement < Element
end
class ParagraphElement < Element
end
Run Code Online (Sandbox Code Playgroud)
似乎每个库都选择不同的命名空间/命名约定.
哪个最好用?
各自的优点和缺点是什么?
我使用此代码将STDOUT路由到文件:
STDOUT.reopen(File.open("./OUTPUT",'w+'))
Run Code Online (Sandbox Code Playgroud)
现在我需要再次将STDOUT路由到终端.
我该怎么做?
如何在另一个线程中启动和停止单独的线程?
loop_a_stopped = true
loop_a = Thread.new do
loop do
Thread.stop if loop_a_stopped
# Do stuff
sleep 3
end
end
loop_b = Thread.new do
loop do
response = ask("> ")
case response.strip.downcase
when "start"
loop_a_stopped = false
loop_a.run
when "stop"
loop_a_stopped = true
when "exit"
break
end
end
end
loop_a.join
loop_b.join
Run Code Online (Sandbox Code Playgroud) 我有一个Builder类,可以让你添加到其中一个实例变量:
class Builder
def initialize
@lines = []
end
def lines
block_given? ? yield(self) : @lines
end
def add_line( text )
@lines << text
end
end
Run Code Online (Sandbox Code Playgroud)
现在,我该如何改变它
my_builder = Builder.new
my_builder.lines { |b|
b.add_line "foo"
b.add_line "bar"
}
p my_builder.lines # => ["foo", "bar"]
Run Code Online (Sandbox Code Playgroud)
进入这个?
my_builder = Builder.new
my_builder.lines {
add_line "foo"
add_line "bar"
}
p my_builder.lines # => ["foo", "bar"]
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个类似于此的布局:
替代文字http://img20.imageshack.us/img20/3533/stackn.png
这是我的代码:
<StackPanel TextBlock.FontFamily="Segoe UI" Orientation="Horizontal">
<StackPanel HorizontalAlignment="Stretch" Width="Auto">
<TextBlock Padding="5,0,5,0" FontSize="12" FontWeight="Bold" Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}" />
<TextBlock Padding="5,0,5,0" FontSize="12" Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Id}" />
</StackPanel>
<StackPanel>
<TextBlock Padding="5,0,5,0" FontSize="10" Text="Delete">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock Padding="5,0,5,0" FontSize="10" Text="Move">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
</StackPanel>
Run Code Online (Sandbox Code Playgroud) 我怎么做下面这样的事情?
[
'foo'
['bar', 'baz'],
[
'one',
['two', 'three']
]
].each { |word| puts word }
# I want this to return:
foo
bar
baz
one
two
three
Run Code Online (Sandbox Code Playgroud) 可以使用CSS选择器a[href^="http:"], a[href^="mailto:"]来匹配文档中的所有外部链接和邮件链接,但有没有办法在选择器的引号部分中使用"或"语句,如下所示:a[href^="(http|mailto):"]?