我正在尝试尽可能多地使用Optional来进行正常的空值检查; 我的IDE(IntelliJ)遇到了一个建议:
Can be replaced by a singular expression in functional style.
Run Code Online (Sandbox Code Playgroud)
这是有问题的代码,有问题的行:
Entry entry = maybeBytes.isPresent() ? Entry.deserialize(maybeBytes.get()) : new Entry();
Run Code Online (Sandbox Code Playgroud)
我在这里看了一下,但找不到用法或至少看到一个适合我的情况.我对lambda功能很新.
我正在使用 NAudio 库获取音频,该库返回 32 位float[]音频数据。我正在尝试找到一种方法将其转换为 16 位byte[]进行播放。
private void sendData(float[] samples)
{
Buffer.BlockCopy(samples, 0, byteArray, 0, samples.Length);
byte[] encoded = codec.Encode(byteArray, 0, byteArray.Length);
waveProvider.AddSamples(byteArray, 0, byteArray.Length);
s.Send(encoded, SocketFlags.None);
}
Run Code Online (Sandbox Code Playgroud)
发送到的音频是waveProvider静态的 - 我认为我没有正确转换。如何转换为 16 位样本的字节数组?
我尝试从 Window 的 API 使用VkKeyScan,但是每当调用该函数时程序就会崩溃。我以这种方式导入和使用的其他 Window API 函数没有遇到任何问题。我的 syscall.Syscall 调用有问题吗?
var (
user32, _ = syscall.LoadLibrary("user32.dll")
vkKeyScan, _ = syscall.GetProcAddress(user32, "VkKeyScan")
)
func VkKeyScan(char byte) (int16, syscall.Errno) {
var nargs uintptr = 1
ret, _, callErr := syscall.Syscall(uintptr(vkKeyScan), nargs, uintptr(char), 0, 0)
return int16(ret), callErr
}
Run Code Online (Sandbox Code Playgroud)