- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用静态解析类型参数的泛型函数
let inline divide a b = a / b
带有签名 ^a -> ^a -> ^a
我可以创建一个包装函数
let log f =
let result = f()
printfn "Result: %A" result
result
如果我然后创建一个像这样的函数
let loggedDivide a b = log (fun () -> divide a b)
它的签名是float -> float -> float
而不是^a -> ^a -> ^a
,意思是
loggedDivide 2.0 5.0
loggedDivide 2 5 //error
如何做到这一点?
注意,这样的事情忽略了尝试重用函数的要点
let logValue a = printfn "Result: %A" a
divide 2.0 5.0 |> logValue
divide 2 5 |> logValue
而且事情不会以这种方式保持通用
let logValueAndReturn a =
printfn "Result: %A" a
a
let divideAndLog a b = divide a b |> logValue
divideAndLog 2.0 5.0
divideAndLog 2 5 //error
最佳答案
您还必须使派生函数内联:
let inline loggedDivide a b = log (fun () -> divide a b)
这将允许传播约束:
val inline loggedDivide :
a: ^a -> b: ^b -> ^c
when ( ^a or ^b) : (static member ( / ) : ^a * ^b -> ^c)
原因是 SRTP 是 F# 编译器功能,它在编译时解析,因此函数通过在调用站点内联得到专门化。
如果你想让你的函数保持通用,它必须是内联的。
请注意,您将函数推断为使用 int
操作的原因是因为这是 \
和其他数学运算符的默认值。否则你会收到一个错误提示。
关于generics - 使包装的 F# SRTP 函数通用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52168904/
我有两个 SIP 端点,想通过 DTLS-SRTP 发送媒体。我在以下几点有点困惑 通过 DTLS 连接发送的 DTLS-SRTP 和 SRTP 数据包是相同的还是不同的? 如果不同,你能解释一下它们
我使用 Asterisk 和 2 个软电话 (Blink) 设置了一个 GNS3 拓扑,并尝试启用安全调用。( https://wiki.asterisk.org/wiki/display/AST/S
我有一个使用静态解析类型参数的泛型函数 let inline divide a b = a / b 带有签名 ^a -> ^a -> ^a 我可以创建一个包装函数 let log f = le
现在我测试 webrtc 与 SIP Client(sx20) 的通信 我用 webrtc sdp 发送邀请消息。但 sip 客户端回答没有指纹,并且 sip 客户端的答案不是 SRTP 只是 RTP
我想问一下是否有这样的Api:SIP RTP SRTP ZRTP对于iPhone,是否有办法在iPhone模拟器中使用它们,以及什么是iPhone 中的默认网关。 最佳答案 一个非常好的 voip 框
我想知道导致 DTLS-SRTP 成为选择用于保护 WebRTC 中媒体的方法的原因。我想人们认为最好在信令平面之外交换 SRTP key Material ,但为什么不允许其他方法,如 SDES?对
这是我在 OpenSSL 服务器模式下的程序, 初始化部分SSL和BIO变量: map m_SSLMap; map m_BioWriteMap; map m_BioReadMap; int Initi
在我的 Chrome webrtc 网络应用程序中,我过去常常通过覆盖 SDP 中的加密信息来指定我自己的加密 key 。我现在正在迁移我的 webrtc 网络应用程序以使用 DTLS-SRTP 进行
我正在尝试在 Raspberry Pi 3 上实现全高清视频 session 解决方案。因为我只需要延迟,所以我只想为音频和视频创建一个简单的管道。我从源代码编译了 gstreamer 1.13.0.
我想将这个工作 ffmpeg 命令转换为 GStreamer 管道,但我无法让它工作。尝试使用 srtpenc 将 key 设置为缓冲区和 udpsink 的十六进制表示,并设置目标主机和端口。 我目
我正在尝试实现 RFC3711(安全 RTP 协议(protocol)) 中定义的伪随机函数的简单版本,它是具有 128 位主 key 的计数器模式的 AES 。 我使用的是 32 位 Intel C
我正在尝试使用 PJSIP 在我的 iOS 应用程序中运行 SRTP。我有 TLS 工作,没有 SRTP 我可以调用和接听电话。但是,对于 SRTP,我在 INVITE 上遇到了这个奇怪的 488 错
我是一名优秀的程序员,十分优秀!