types 相关问题

类型和类型系统用于强制程序中的抽象级别。

基于类型参数重载方法

我想要一个可以使用或不使用类型参数来调用的方法,并为每个方法返回不同的值。这是一些明显简化的代码: 对象 Foo { def apply() = "你好" ...

回答 1 投票 0

如何在未命名类内的 typedef 中获取未命名结构的类类型?

这是一个理论问题,是否可以在其定义中获取未命名结构的类型。 int main() { 结构体{ 使用 ThisType = ???? //我在这里放什么? ...

回答 1 投票 0

使用类型约束对通用 Kotlin 类进行子类化

我在 Kotlin 中组合子类化多态性和泛型(临时多态性)时遇到了问题。 这是我的类型定义: 接口状态 接口 StatefulContainer 我在 Kotlin 中组合子类化多态性和泛型(临时多态性)时遇到了问题。 这是我的类型定义: interface State interface StatefulContainer<out S : State> { val state: S } interface StatefulContainerRepository<C: StatefulContainer<S>, S: State> // Specialization starts here sealed interface MyState : State enum class StateA : MyState { A1, A2 } enum class StateB : MyState { B1, B2 } sealed interface MyEntity : StatefulContainer<MyState> { override val state: MyState } data class EntityA(override val state: StateA) : MyEntity data class EntityB(override val state: StateB) : MyEntity sealed interface MyContainerRepository<C: StatefulContainer<S>, S: MyState>: StatefulContainerRepository<C, S> class ARepository: MyContainerRepository<EntityA, StateA> 类型检查器返回以下错误:Type argument is not within its bounds. Expected: StatefulContainer<StateA>. Found: EntityA。这很奇怪,因为EntityA是一个StatefulContainer<StateA>——至少我是这么认为的。但是,如果我进行以下修改: data class EntityA(override val state: StateA) : MyEntity, StatefulContainer<StateA> 类型检查器抱怨Type parameter S of 'StatefulContainer' has inconsistent values: MyState, StateA。为什么会这样呢?如何正确输入上面的类层次结构? 我习惯了 Haskell 等语言的更直接的参数多态性,或者纯 OO 子类型。这里的组合,再加上 JVM 的类型擦除,让我很难理解发生了什么。因此,除了上面的具体问题之外,我还希望获得一些更基本的见解 - 哪些概念在起作用,如果我设法理解它们,将帮助我解决这个问题和类似的情况? 这很奇怪,因为 EntityA 是 StatefulContainer<StateA>。 这不是真的。 EntityA是一个MyEntity,而那只是一个StatefulContainer<MyState>,你希望它比实际情况更具体。只有以下内容才有效: class ARepository: MyContainerRepository<EntityA, MyState> 或者,您可以通过另一种方式声明 EntityA。你建议这个: data class EntityA(override val state: StateA) : MyEntity, StatefulContainer<StateA> 但这也不起作用,因为 StatefulContainer<StateA> 与 MyEntity 不兼容。他们的属性不匹配。让我们看看如果上述方法可行会发生什么。为了更好地演示它,我们首先让 MyEntity 将其属性覆盖为 var 而不是 val (*): override var state: MyState 然后考虑这段代码: val entityA: StatefulContainer<StateA> = EntityA(StateA.A1) val myEntity: MyEntity = entityA myEntity.state = StateB.B1 首先,我们创建 EntityA 的一个新实例,然后将其转换为 MyEntity。通过上面的 EntityA 声明,应该可以正常工作,因为它具有 MyEntity 和 StatefulContainer<StateA> 两种类型。前两行很好。然后让我们看最后一行:乍一看一切似乎都正常:我们更改 state 的 MyEntity 值并将其设置为允许的子类型之一。但请记住,底层对象实际上是 EntityA 的实例。并且 都不允许其值被更改(它被声明为 val),nor 也不能保存 StateB.B1(因为它是 StateA 类型)。这里出了严重的问题。上面的代码没有错误,所以它一定是EntityA的声明:它显然不可能同时是MyEntity和aStatefulContainer<StateA>。 只需删除 MyEntity 作为 EntityA 的子类型,如下所示: data class EntityA(override val state: StateA) : StatefulContainer<StateA> 现在您的初始代码将按预期工作。 (*):这是完全合法的,因为通过覆盖它会创建一个新属性,该属性可以具有任何特征,只要它具有also来自超类的特征。

回答 1 投票 0

将空列表传递给采用特征迭代器的函数

我有一些代码需要接受数据结构列表,这些数据结构可以是多种不同类型中的任何一种,但都实现了 Into。所以,我说参数是 impl

回答 1 投票 0

监听Quasar上的输入验证事件

在我的 Vue3 Quasar 项目中,我有一个与此类似的组件: {{ props.label }} ... 在我的 Vue3 Quasar 项目中,我有一个与此类似的组件: <template> <div class="q-pa-md"> <div id="myCustomLabel">{{ props.label }}</div> <q-input ref="myInput" filled v-model="name" :rules="props.rules" /> </div> </template> 只要字段无效,它就会将其颜色更改为红色。但是我还需要将输入上方的“myCustomLabel”div 更改为红色。 有没有什么方法可以在字段经过验证或未通过规则时触发函数,以便我也可以更改? 这个效果很好 <div id="q-app" style="min-height: 100vh;"> <div class="q-pa-md" style="max-width: 300px"> <p :class="!isValid && 'bg-negative'">Custom label</p> <q-input filled v-model="model" label="Type here" bottom-slots hint="Max 3 characters" error-message="Please use maximum 3 characters" :error="!isValid" ></q-input> </div> </div> const { ref, computed } = Vue const app = Vue.createApp({ setup () { const model = ref('') return { model, isValid: computed(() => model.value.length <= 3) } } }) app.use(Quasar, { config: {} }) app.mount('#q-app') 这里是一个代码笔,带有视觉再现,这取自文档的这部分。

回答 1 投票 0

对 TypeScript 中的 JSON 和 Array 感到困惑

我使用Sveltekit和nodejs从数据库获取数据,并且总是像这样获取数据 ... 响应数据 = 等待响应.json(); 它返回对象,我可以将它分配给一个数组 让 getData = ...

回答 1 投票 0

在 TypeScript 中“导出类型”和“导出声明类型”有什么区别

在 TypeScript 中,我认为“声明”向编译器暗示这是在其他地方创建的。这两种看似工作相同的“类型”实际上有何不同?是不是因为如果是

回答 1 投票 0

是否可以在 TypeScript 的类中定义类型(字符串文字联合)?

在 TypeScript 1.8 中,他们添加了一种称为“字符串文字类型”的新类型,它允许您声明只能是一组有限值中的一个的类型。他们给出的例子是: 输入缓动=“...

回答 2 投票 0

C# 相当于 Swift 类型别名

我是 C# 新手,并且习惯了 Swift,所以请耐心等待。 我想完全按照下面 Swift 代码描述的方式使用 C# 中的类型: typealias Answer = (标题: String, isCorrect: Bool)

回答 5 投票 0

为“uint32_t”输入冲突的类型;有 '__uint32_t' {又名 'long unsigned int'}

在使用STM32Cube时,它给了我这个错误,我不知道为什么,因为我还有另一个具有相同typedef的文件,但我没有将这两个文件包含在同一个.c文件中,为'

回答 1 投票 0

execute(&mut *transaction) 与execute(&mut transaction)

我很好奇在我的示例中execute(&mut *transaction) 和execute(&mut transaction) 之间有什么区别,因为我不认为transaction 是一个开始的指针,但对于s...

回答 1 投票 0

检查列表中的所有元素是否属于同一类型

如何检查列表的元素是否属于同一类型,而不需要单独检查每个元素(如果可能)? 例如,我想要一个函数来检查...的每个元素

回答 11 投票 0

推断传递数组中的多种可能类型(扩展运算符)

我正在寻找一种方法来推断类型函数的每个扩展参数的类型。 假设我有两个具有以下定义的字段。 类型字段 = { 值:T,名称:st...

回答 1 投票 0

tsc :文件 C:\Program Files 无法加载 odejs sc.ps1,因为在此系统上禁用运行脚本

我正在尝试为 file.ts 运行命令 tsc 来将此代码编译为 js,但发现以下错误: tsc :文件 C:\Program Files odejs sc.ps1 无法加载,因为运行脚本被禁用...

回答 2 投票 0

适用于所有数据类型的动态 TryParse

我需要检查一个对象是否可以转换为特定的数据类型,并提出了这个: 公共静态 bool TryParseAll(System.Type typeToConvert, object valueToConv...

回答 3 投票 0

我可以检查 ReflectionType 是否是另一种类型的实例吗?

我想检查可调用对象的返回类型是否是另一种类型的实例。例如,假设我有: 扩展了 Animal 的 Pigeon 类。 函数 addSupplier() 接受一个可调用的 ar...

回答 1 投票 0

字节编码字典的正确类型提示是什么?

我有一本字典,键是用字节串编码的字典: 我的词典 = { b'{"key 1": 3, "key 2": 6}': '我的第一个值', b'{"键 1": 2, "键 2&q...

回答 2 投票 0

循环记录类型var并使用pl/sql将值插入到目标表

我有这个表TABLE_BB(名字,姓氏,id)。 我还有一个记录类型: EMPREC 是记录(fname varchar,lname varchar2,idty varchar2); 类型 emprectype 是 TABLE OF EMPREC INDEX BY BINARY_INT...

回答 1 投票 0

Python 2 如何比较不同类型的对象?

以下代码片段带有输出注释(如 ideone.com 上所示): 打印“100”< "2" # True print "5" >“9”#错误 打印“100”< 2 # False print 100 < "2"...

回答 2 投票 0

F# 记录与班级

我曾经将记录视为(不可变)数据的容器,直到我遇到一些启发性的读物。 鉴于函数可以被视为 F# 中的值,记录字段可以保存函数 val...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.