如何解决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] 举报,一经查实,本站将立刻删除。