- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在定义新功能时遇到了开发问题,涉及如何“静默定义类型”。目前我有这样的宏:
f = @ode_define begin
dx = a*x - b*x*y
dy = -c*y + d*x*y
end a=>1.5 b=>1 c=3 d=1
这将扩展到
f = (t,u,du) -> begin
du[1] = 1.5*u[1] - u[1]*u[2]
du[2] = -3*u[2] + u[1]*u[2]
end
这些定义了用于 ODE 求解器的函数。 ODE 求解器的某些功能需要知道参数(即灵敏度分析需要采用参数导数)以便使其更通用我想内联用 =
定义的参数,并有一个“命名方式使用 =>
定义的访问”参数。例如,我想将宏扩展为:
f,p = (t,u,du,p) -> begin
du[1] = p.a*u[1] - p.b*u[1]*u[2]
du[2] = -3*u[2] + u[1]*u[2]
end
问题是,如何定义参数?我可以让宏也这样做:
type Parameters
a::Float64
b::Float64
end
p = Parameters(a,b)
然后您每个 session 只能使用一次宏,因为每次都需要定义一个参数类型。有没有一种安全的方法来命名这种类型,以便可以重复使用宏?从本质上讲,参数类型除了是包含 a
和 b
的容器之外没有其他意义,并且可以通过名称访问它(至关重要,因为我计划做一些事情,询问你想对哪些参数进行操作,比如 fork 图)。这就是我所说的“默默地”的意思——我希望宏吐出一个 p
,其中 p.a
和 p.b
工作,没有引用/用户不必关心这是如何定义的。此外,此设计路径有一个限制,即无法在函数内部定义类型,因此此宏不能用于在函数内部定义 ODE 函数。
Julia 是否提供了一种不牺牲性能的解决这些问题的好方法? (我可以使用字典,但这会导致性能下降)。
总结一下设计目标,我想要一些东西,以便像我在开头展示的那样的宏可以编写如下代码:
f,p = (t,u,du,p) -> begin
du[1] = p.a*u[1] - p.b*u[1]*u[2]
du[2] = -3*u[2] + u[1]*u[2]
end
type Parameters
a::Float64
b::Float64
end
p = Parameters(a,b)
打电话
solve(f,p,y0)
在本质上做的求解器中使用
for i = 1:numiterations
y = y + dt*f(t,u,du,p)
end
问题在于 p
的正确形式是否是一种类型,或者 Julia 是否有其他东西可以“用名字来称呼事物”。如果它是一种类型,您如何解决类型必须具有唯一名称的事实(因此宏不能简单地将其扩展为类型参数,因为每次它可能具有不同的字段)但是自动生成什么在您只知道字段名称的地方键入?
最佳答案
gensym
创建全局唯一的名称,可以将其拼接到类型定义表达式,例如:
Expr(:type, true, gensym(:parameter), Expr(:(::), :x, :Int))
I could use a dictionary, but that would cause a performance hit
不完全确定我理解这里的设计目标,但在您的示例中,您将实例 p
包装在闭包中。如果您将 ODE 名称设为宏参数 (@ode_def f = ...
),那么您可以在来自 f => f_metadata
的某个全局字典中设置映射p
的句柄以及您可能需要修改的任何内容。
关于types - Julia 设计 : Silently Defining/Naming Types in Macros,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39485715/
我编写了一个 Android 应用程序,如果 BroadcastReceiver 收到通知,它会将铃声模式从任何模式更改为正常模式。 它在 Android < 8 上运行良好。 它也适用于我的 And
在函数的 python 代码中,当设置如下内容时: def myfunction(silent=False, x, y) silent=False 有什么作用? 最佳答案 使用您当前的代码: def
PackageInstaller ( https://developer.android.com/reference/android/content/pm/PackageInstaller.html
我正在尝试使用 the angular-oauth2-oidc Silent Refresh实现与在 IdentityServer4 服务器中配置的隐式流相结合。我有一个在 ng new ng-and
我正在开发一个需要静默打印的 Web 应用程序,即无需用户参与。实现这一目标的最佳方法是什么?它不喜欢严格使用 Javascript、Flash 和/或 AIR 来完成。我见过的最接近的是 Java
在 vim 中我有这个 nmap nmap ,mu : marks ABCDEFGHIJKLMNOPQRSTUVWXYZ 如果我没有 Upper 标记并尝试 ,mu 我得到 E283: No mar
我目前正在实现一个 JavaScript 框架。在这里,我想捕获页面上的鼠标和触摸事件,而不干扰其他事件处理。例如: DOM: A Button JS(使用 jQuery): $("#capture
我想在Python脚本中提取7-Zip存档。它工作得很好,除了它会吐出提取细节(在我的情况下这是很大的)。 有没有一种方法可以在提取时避免这些详细信息?我没有找到7z.exe的任何“静音”命令行选项。
我正在尝试覆盖 web 表单的 onError 事件处理程序,以允许在表单内处理“从客户端检测到潜在危险的 Request.Form 值”类型的错误,而不是在应用程序级别的错误处理程序中结束。 我找到
调试静默JS功能失败 我编写了一个 Node 连接函数,该函数连接成功,将数据插入数据库,但随后无法执行处理任何进一步错误的代码。 在这种情况下我应该如何调试? 这是我的相关脚本: var conne
我今天遇到了一个非常严重的错误,这是一个 MWE: #include class X { public: X() { std::cout << "Default" << std::endl; }
跟进 this问题,有没有办法在不提示用户任何操作的情况下在 android 中启动 Intent ? 现在,我正在检索这样的图像: public void changeImage(View view
我正在为我在 Eclipse 3.4.2 中开发的项目使用 Ant 构建脚本。它实际上是一个 Flex 4 项目(使用 Flash Builder Eclipse 插件 )。 一切正常。但是有一天发生
我一直使用 cocoaasyncsocket 作为使用 asyncsocket 的 Windows .net 服务器的客户端。我正在使用 ProtocolBuffers 编码消息。这些共同构成了一套很
我正在开发一个内部 Google Chrome 扩展,它需要一种方法来启动将当前页面打印到打印机。我不希望出现默认的打印对话框(因此,javascript:window.print() 是不可能的)。
我有一个非常简单的 Angular ui 路线结构: index.html: 应用程序配置: $stateProvider .state('app', {
假设我定义了一个 pod,它只运行几段代码然后退出。我需要确保这个 pod 在允许其他 pod 运行之前退出。实现这一点的最佳方法是什么? 我曾经通过执行网络请求来检查 pod 是否准备就绪,例如一旦
我们有一个 2006 年的旧应用程序,我们想使用组策略在命令行中卸载,但我无法静默卸载。 这有效。当然我需要点击下一步卸载: "C:\App\Setup.exe" /uninst 但这不是。我看到了
假设您正在从头开始设计一个数学库(在 JS 中):常见的 Vector2/3/4、Matrix2/3/4、四元数 等等(WebGL 应用程序的标准内容)。处理错误输入的最佳方法是什么? (除以零、反转
StackOverflow 有很多关于浮点表示的主题,关于异常、截断、精度问题。我一直试图解释这个,但仍然没有弄明白。 from operator import add, sub, mul, div
我是一名优秀的程序员,十分优秀!