虽然我意识到自己并不是非常严谨,但我很确定组合器的简单术语只是一个没有自由变量的函数。例如,
f(x,y) = x * 2
将是一个组合者和
namespace ConsoleApplication1
{
class BoundOrFree
{
private int _i = 0;
public int f(int x, int y)
{
return x + y + _i;
}
}
}
不会是因为你会自由的。
所以,鉴于理解是否会将类定义中的成员变量视为“免费”?我猜它会,但我想检查我的假设。代码就像这个C#例子:
devise_for :users, :controllers => { :registrations => "registrations", :sessions => "sessions" },
:path => "",
:path_names => { :sign_in => 'login',
:sign_out => 'logout',
:sign_up => 'signup',
:edit => 'profile/edit' } do
match '/update_password' => 'users/registrations#update_password', via: :post
end
在BoundOrFree.f中,成员函数是_i免费的吗?因此,f不是组合者吗?我假设这两个问题的答案都是肯定的,但我想证实我的假设。
答案 0 :(得分:1)
在这种情况下,你误解了“免费”一词。自由变量是从外部范围捕获的变量(通过闭包)。所以不会是因为y是免费的
f(x,y) = x * 2
是组合者。
回答你的问题
在BoundOrFree.f中,成员函数是_i免费的吗?因此,f不是组合者吗?
BoundOrFree::f
函数不是组合子,因为它使用的变量不是唯一的参数。