微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

julia 中的“where T”在 T 之后没有任何说明的情况下做什么?

如何解决julia 中的“where T”在 T 之后没有任何说明的情况下做什么?

我是 julia 的新手,我无法找到对我来说完全有意义的对 [root@tree ~]# ls -alh /var/log/MysqLd.log -rw-r----- 1 root logs 8.3K Apr 20 02:17 /var/log/MysqLd.log [root@tree ~]# chown MysqL: /var/log/MysqLd.log [root@tree ~]# systemctl start MysqLd [root@tree ~]# systemctl status MysqLd ● MysqLd.service - MysqL Server Loaded: loaded (/usr/lib/systemd/system/MysqLd.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2021-04-20 15:32:01 UTC; 20s ago Docs: man:MysqLd(8) http://dev.MysqL.com/doc/refman/en/using-systemd.html Process: 28339 ExecStart=/usr/sbin/MysqLd --daemonize --pid-file=/var/run/MysqLd/MysqLd.pid $MysqLD_OPTS (code=exited,status=0/SUCCESS) Process: 28313 ExecStartPre=/usr/bin/MysqLd_pre_systemd (code=exited,status=0/SUCCESS) Main PID: 28342 (MysqLd) Memory: 43.3G CGroup: /system.slice/MysqLd.service └─28342 /usr/sbin/MysqLd --daemonize --pid-file=/var/run/MysqLd/MysqLd.pid 的解释。 所以我明白,例如 where 要求 x 和 y 参数都是某种数字类型。

但是还有其他函数看起来像 function f(x::T,y::T) where {T<:Number} = true 没有任何关于 T 应该是什么的规范。有人可以解释一下它在做什么以及我什么时候想使用这种语法吗?

解决方法

where T 没有其他任何东西就是 where {T<:Any} 换句话说,它适用于所有 T,但是 Julia 需要你写一些东西来定义 `T。

,

奥斯卡的回答是正确的,但要回答你的第二个问题,

我什么时候想使用这种语法?

就像评论中建议的 mbauman 一样,这种语法的典型用途是当您想在函数体中使用类型时。也许示例 in the docs 有帮助:

julia> mytypeof(x::T) where {T} = T
mytypeof (generic function with 1 method)

julia> mytypeof(1)
Int64

julia> mytypeof(1.0)
Float64

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。