如何调用函数p
?我不知道如何定义type Params
a::TypeOfA
b::TypeOfB
c::TypeOfC
end
_unpack(p::Params) = (p.a, p.b, p.c)
function dxdt(x, p::Params)
a, b, c = _unpack(p)
a*x^2 + b*x + c
end
作为调用函数的参数。
public function up()
{
Schema::create('friend_user', function(Blueprint $table) {
$table->increments('id');
$table->integer('friend_id')->unsigned()->index();
$table->integer('user_id')->unsigned()->index();
$table->foreign('friend_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
}
答案 0 :(得分:1)
结帐Parameters.jl。它有一个宏来做这个用更多的糖和更少的打字。我想那就是你要找的东西?
using Parameters
@with_kw type A
a::Int = 6
b::Float64 = -1.1
c::UInt8
end
# Safe Way
function dxdt(x, p)
@unpack a,b,c = p # This works on any type
a*x^2 + b*x + c
end
# Easy Way
function dxdt(x, p)
@unpack_A p # This only works on instances of A
a*x^2 + b*x + c
end
答案 1 :(得分:1)
您的问题是如何定义p
类型的变量Params
?
对于a = 1.0,b = 2.0,c = 3.0:
p = Params(1.0,2.0,3.0)
可以通过以下方式使用:
type Params
a::Float64
b::Float64
c::Float64
end
p = Params(1.0,2.0,3.0)
_unpack(p::Params) = (p.a, p.b, p.c)
function dxdt(x, p::Params)
a, b, c = _unpack(p)
a*x^2 + b*x + c
end
dxdt(1.0,p)
6.0
我认为这就是你要问的但我不确定。