我正在写游戏。在C
++中,我会将所有实体类存储在BaseEntity类的数组中。如果一个实体需要在世界范围内移动,它将是一个PhysEntity,它是从BaseEntity派生而来的,但具有附加的方法。我试图模仿这是去:
package main
type Entity interface {
a() string
}
type PhysEntity interface {
Entity
b() string
}
type BaseEntity struct { }
func (e *BaseEntity) a() string { return "Hello " }
type BasePhysEntity struct { BaseEntity }
func (e *BasePhysEntity) b() string { return " World!" }
func main() {
physEnt := PhysEntity(new(BasePhysEntity))
entity := Entity(physEnt)
print(entity.a())
original := PhysEntity(entity)
// ERROR on line above: cannot convert physEnt (type PhysEntity) to type Entity:
println(original.b())
}
这将无法编译,因为它无法告知“实体”是PhysEntity。什么是该方法的合适替代方法?
使用类型断言。例如,
original, ok := entity.(PhysEntity)
if ok {
println(original.b())
}
问题内容: 我正在尝试为订阅编写通用包装,例如: 假设有一个我想使用的库,其中包含一个subscription方法,但是使用了一个库。我希望能够执行以下操作: 目前,我认为这样的转换是不可能的。而且我不想修改基础库,因为包装器应该与库实现无关。 我已经看到有没有一种方法可以投射Structs以便通过通道发送,但是在那种情况下,可以根据需要修改应用程序。在这里,它不能。这可能吗?有没有更好的办法?
本文向大家介绍Swift投射,包括了Swift投射的使用技巧和注意事项,需要的朋友参考一下 示例 将函数应用于集合/流并创建新的集合/流称为投影。
问题内容: 我在了解如何存储其数据时遇到了麻烦。考虑以下: 这就是说是列主(),因此,在内部应如下所示: 这就是本词汇表中所说的。令我困惑的是,如果我尝试以线性方式访问的数据,则会得到: 在这一点上,我不确定该标志告诉我们什么,因为它不遵守该顺序。显然,python中的所有内容都是行专业的,当我们想以线性方式进行迭代时,可以使用迭代器。 问题如下: 假设我们有一个数字列表,例如:,我们如何以列主要
新手入门 - 专业术语 操作系统 访客浏览您网站时使用的操作系统名称。 百度推广 百度推广给您网站带来的流量及转化情况。您可以及时了解百度各类推广方式的效果以及这些效果是否达到了您预期的业务目标,从而帮助您更有针对性地改善百度推广方案。 DEF 返回 Flash版本 访客浏览器程序中安装的 Flash 版本。 地域分布 各个地域带来的流量及转化情况。您也可以选择来源过滤,查看特定来源下,各地域的流
本文介绍了Electron开发时常用的专业属于. ASAR 含义:ASAR即Atom Shell 程序包 asar类似常用的 tar 格式文件,Electron 无需解压即可读取其中的文件。 asar的使用方法,通常用来将文档打包在一个.asar中,防止js,html,css等文件直接暴露在外. 简单例子: 1 安装:$ npm install asar -g 2 压缩:$ asar pack
我有一个关于嵌套列表投影界面用法的问题。我有两个实体(父和子)(它们有单向关联) 父级=> 子=> 我有两个选择特定列投影界面。 这个查询可以工作,但是它选择ChildEntity的所有列,并且只将id、name propeties映射到ChildProjection。(生成的查询选择所有列,但我想只选择id和name列) 我如何只选择id和name列(为嵌套列表投影界面选择特定列)并映射到Chi