gpt4 book ai didi

elixir - 在 Elixir 中使用 "_var"而不是 "_"时的性能影响?

转载 作者:行者123 更新时间:2023-12-04 10:36:08 26 4
gpt4 key购买 nike

使用 _ 命名任何未使用的变量有一个通用规则。在 Elixir 中。这样做会阻止任何绑定(bind)到该变量的东西。

但是,我注意到一种广泛使用的模式,即使用下划线前缀来表示忽略的参数,形式为 _tail。 (目的是提供关于变量是什么的提示)。

如果您尝试访问 _tail,该语言会通过 shell 中的警告鼓励这样做。 :

warning: the underscored variable "_tail" is used after being set. A leading underscore indicates that the value of the variable should be ignored. If this is intended please rename the variable to remove the underscore



但这就是问题所在; _tail绑定(bind)了变量,而仅使用 _它不是。

这是否意味着在使用 _ 以外的任何内容命名忽略的变量时会降低性能? ?或者 Elixir 是否仍然绑定(bind) _在幕后,只是在任何尝试访问时出错?

编辑:看起来 Erlang 编译器专门优化了这种情况来处理 _*_因此没有开销,来源: http://erlang.org/doc/efficiency_guide/myths.html

最佳答案

鉴于每个人都已经给出了不用担心这种性能行为的免责声明,答案是:如果一个变量没有被使用,编译器会注意到它并且编译的字节码会简单地忽略它,就像你使用了 _ .这就是为什么如果你这样做 x = 1永远不会x ,您会收到编译器警告。

关于elixir - 在 Elixir 中使用 "_var"而不是 "_"时的性能影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34487482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com