当前位置: 首页 > 知识库问答 >
问题:

了解Kotlin中“in”关键字的一种用法

晏晨朗
2023-03-14

我试图理解静态编程语言对泛型的理解,尤其是inout关键字。我写了这篇简单的文章,希望能说明我的困惑点。

这是看起来可行的方法;

在这里,IDE给出了一个提示,说明for循环正在迭代的项目类型是Shape。这很好。

上面方法的另一个版本乍一看似乎不太对劲(因为它是一个“消费者”)。但是我想做的就是阅读一个形状列表,这就是中的全部内容。

这不起作用,根据规则,这可能是正确的,但我无法在这里连接点。这似乎是一个安全的操作。我还可以看到静态编程语言将类型降低为“任何?”这解释了为什么这已经给出了编译器错误。有人能解释一下这里潜在的类型不安全吗?


共有1个答案

牛景同
2023-03-14

差异始终是一个很难解决的概念…

如果您使用的是术语“生产者”和“消费者”,请注意,它们指的是您与相关项目的交互。在本例中,指的是可变列表参数。

您的第一个函数,带有一个可变列表

在每种情况下,如果您正在使用列表,那么您从列表中提取的任何内容都将始终是Shape(正如IDE确认的那样)。

但是如果你想把一些东西放到列表中(作为制作人),你不能说添加什么是安全的,因为这取决于它是否是一个子类,以及是哪个子类。

第二个函数,带有一个可变列表

在每种情况下,将形状(作为制作人)放入列表总是安全的。

 类似资料:
  • 问题内容: 我正在尝试从parse.com实现一些代码,并且在void后发现一个关键字。 我难住了,这是什么?您在第二行看到 该文档没有对此进行说明。我知道关键字用于循环。 有人确认吗? 问题答案: 在命名函数中,我们声明参数并在声明行中返回类型。 在匿名函数中,没有声明行-它是匿名的!因此,我们在正文的开头使用一行来代替。 (这是匿名函数的 完整 形式。但是Swift拥有一系列规则,允许在某些情

  • 本文向大家介绍C# this关键字的四种用法,包括了C# this关键字的四种用法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C# this关键字的四种用法,供大家参考,具体内容如下 用法一  this代表当前实例,用this.显式调用一个类的方法和成员 用法二  通过this实现原始类型的扩展(下一篇详解) 用法三  通过this实现索引器,可用于优化程序性能(下一篇详解) 用

  • 使用“关键字”面板可以创建并对文件应用 Adobe Bridge 关键字。可以将关键字组织成由父关键字和子关键字(称为子关键字)。使用关键字,您可以根据文件内容识别文件。例如,您可以使用筛选器面板来查看某一文件夹中共享某些关键字的所有文件,也可以使用“查找”命令来查找包含指定关键字的文件。 有关详细信息,请参阅嵌入式层次结构关键字 | Adobe Bridge。 创建新关键字和子关键字 在关键字面

  • 我们可以编写包含或不包含的代码,如下所示。 或 的实际用途是什么?。这是内存效率更高还是可读性更强?

  • 本文向大家介绍详解JavaScript中this关键字的用法,包括了详解JavaScript中this关键字的用法的使用技巧和注意事项,需要的朋友参考一下 this是函数内部的一个特殊对象,this引用的是函数据以执行的环境对象(关于环境对象我们会在文章最后作补充说明),在调用函数前this的值并不确定,不同的调用方式会导致this值的改变。 记住:函数名仅仅是一个包含指针的变量而已。因此即使是在

  • 问题内容: 我了解操作员在此代码中的作用: 我也明白这将采用此代码中列表的每个值: 我很好奇,如果在使用的操作循环是一样的第一个代码使用运营商。 问题答案: 它们是相同的概念,但不是相同的运算符。 在示例中,是一个处理几种不同情况的运算符。在Python文档的运营商给予的细节,我意译如下:电话,如果有一个成员函数。否则,请尝试迭代查找,如果不存在,则调用。复杂性是为旧代码和新代码提供一致的成员资格