我确信以下2条陈述可以归结为同一件事。 但是在将第一个语句重构为第二个语句之后,我中断了应用程序。
class Car {
...
Car(const Taxi& t); // not necessary but for experimental purpose
};
*this = *static_cast<Car*>(&taxi);
这两个为什么不一样?
这些箭头功能中没有const myReader = new DataReader(line => this.onStdOutLine(line));
process.stdout.on('data', (data) => myReader.processData(data));
,因此似乎没有害处。至于DataReader类本身:
const myReader = new DataReader(line => this.onStdOutLine(line));
process.stdout.on('data', myReader.processData);
答案 0 :(得分:2)
关于DataReader类本身……
确实使用my_to_f
,例如def my_to_i(num)
num.to_i
end
def my_to_f(num)
num.to_f
end
def to_formatted_date(date_str)
DateTime.strptime(date_str, "%d-%m-%y")
end
因此,需要调用res = questions.map do |question|
answer = nil
3.times do
puts question[:text]
u_input = gets.chomp
if send question[:validate], u_input
answer = send question[:convert], u_input
break
end
end
if answer.nil?
puts "C'mon man! Check your keyboard!" # after three input errors!!
break
end
{ question: question[:text], answer: answer }
end
的代码需要确保#=> [
{:question=>"Enter an integer:", :answer=>1},
{:question=>"Enter a float:", :answer=>1.1},
{:question=>"Enter a data as d-m-Y", :answer=>#<DateTime: 2020-10-27T00:00:00+00:00 ((2459150j,0s,0n),+0s,2299161j)>}
]
是它的this
值。
箭头功能通过将其称为this._buffer += data;
来实现。
如果将processData
函数作为myReader
的参数传递,则事件处理代码不会在this
的上下文中调用它。甚至不知道myReader.processData(data)
存在。
如果要删除箭头功能,则必须做其他事情来维护processData
的上下文。
您可以使用函数表达式或on
。
myReader