- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 FunKTiale 库执行模式匹配。然后,当我按如下方式初始化变量时:
private lateinit var socket = Option.None
下面的转换是不可能的:
socket = socket.map {
selectedDevice.createRfcommSocketToServiceRecord(MY_UUID).apply {
connect()
}
}
因为socket的类型是
Option.None
但是如果我将套接字变量初始化为
private lateinit var socket: Option<BluetoothSocket> = Option.None
map 功能有效。 Option.None 对象扩展
Option<Nothing>
并被(在本例中)转换为
Option<BluetoothSocket>
那么,这怎么可能呢?
最佳答案
原因是当你省略字段类型时,最具体的类型是从初始值类型推断出来的。要声明一个具有一些不太具体的类型的字段,应该明确指定它。
假设您的情况下层次结构如下所示:
Any -> ... -> Option -> Option.None
因此,当初始值的类型为 Option.None
时, 它也被推断为字段类型,并且该字段将无法存储更通用类型的值 Option
.
使字段类型为Option
或者更一般的东西直到 Any
您必须明确指定它。
为了更清楚,这也适用于您的情况:
var socket = Option.None as Option<Socket>
在这里,输入 Option.None as Option<Socket>
不是 Option.None
但是Option
.但是,当您在复杂层次结构的情况下指定字段类型时,代码更具可读性。
关于Kotlin:Upcast 和 sealed 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34976847/
我正在使用 Simple Encrypted Arithmetic Library (SEAL)来自 Microsoft 密码学研究组的库。有没有办法获取seal::Ciphertext variab
下面的代码片段是有效的 public class BaseClass { public virtual void Display() { Console.WriteLine("
当当前类曾经从父类(super class)继承时,为什么我们要在方法或属性上使用 sealed 关键字?假设我们创建了一个类,并且倾向于将它的一个或多个方法暴露给对象用户,但根本不让它被继承,并使用
我试图阻止我的基类派生其方法之一,但似乎不可能以我喜欢的方式进行,我认为我做错了。 你能帮忙吗? :)我真的很想成功使用 sealed 关键字! 这里有一些代码: public class BaseC
我有一种情况想要解释编译器的行为。给出一些代码: interface IFoo { T Get(); } class FooGetter : IFoo { public int Get
A 是来自引用的 dll 的类,因此无法更改。它有一个方法 Foo(),在我的 DoFoo() 方法中调用(将 A 作为参数)。我想在不执行 Foo() 的情况下测试 DoFoo(),因为它很昂贵并且
我认为 sealed 应该包含在 C# 语言的访问修饰符列表中。有人可以告诉它被排除在外的原因吗? 最佳答案 它不是访问修饰符,它与一个类是否可以继承有关... 关于c# - 为什么 sealed 关
假设我计算了 2 的加法 或乘法 Ciphertexts并将结果放入第三个。如果我想对我的结果执行额外的数学运算 Ciphertext (目的地 Chipertext ),是否建议使用 evaluat
我正在使用 PySEAL库,它是 Microsoft SEAL 的一个分支同态加密库,用于在加密数据上实现机器学习算法。为此,我需要除以数字。在examples.py源代码中有执行加法、减法和乘法的示
我的 SEAL v2.3.1 中有这些 SEAL 设置: seal::EncryptionParameters parms; parms.set_poly_modulus("1x^2048 + 1")
A) 我无法理解这些设置之间的关系: parms.set_poly_modulus("1x^2048 + 1"); parms.set_coeff_modulus(coeff_modulus_128(
虽然我知道出于安全原因可以使用 sealed,但有些人在叶节点上使用 sealed 关键字作为优化技术。 这对优化有何帮助?为什么编译器不够聪明,无法自己解决这个问题? 最佳答案 假设您有一个在叶类中
我想模拟类似固定对象的东西,这样就不能向对象添加新成员。 Object.seal(Obj) 似乎是正确的方法,但当我尝试创建新成员时它并没有抛出异常。成员没有被创建,但它悄无声息地发生。 var O
我对密文和最后的正方形进行了一系列计算。问题是,即使有足够的噪声预算来执行平方和重新线性化(在操作之前和之后),当我解密它时,我也会得到不正确的结果。 奇怪的是,如果我解密和解码,然后在新的密文中再次
这个问题在这里已经有了答案: Is the sealed command c++ 0x or is it only microsoft who has it (3 个答案) 关闭 5 年前。 考虑以
我正在玩 java 15 中的预览密封类,我想知道为什么关键字 sealed 和 non-sealed 只适用于类和接口(interface),而不适用于方法(像其他修饰符一样)。我想具体决定哪些方法
我正在使用 FunKTiale 库执行模式匹配。然后,当我按如下方式初始化变量时: private lateinit var socket = Option.None 下面的转换是不可能的: sock
我有一个抽象类,继承时需要重写 3 个方法。但我真的很想密封另一种方法,这样它就不会被覆盖。它包含整个类工作的重要逻辑,我希望避免用户通过在他/她不应该做的地方进行覆盖来终止功能。 有办法实现这一点吗
Iron.seal 无法更新 npm 模块 Iron,这就是我在登录用户时遇到此问题的原因 var obj = { a: 1, b: 2, c: [3, 4, 5],
我正在编写一个绘制图形的脚本。我希望该图形保持完整,直到用户手动关闭它(例如单击十字)。 如果用户在 Matlab 提示符下发出绘图命令,这不应影响现有图形,但会自动打开一个新图形。 如何在 Matl
我是一名优秀的程序员,十分优秀!