问题标签 [extension-function]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - 向多个非继承类添加方法
有什么方法可以将方法添加到多个类,或者减少实现相同方法所需的重复代码量。
目前我使用以下内容(在此示例中添加 ac 方法,该方法计算迭代中项目的重复次数):
我想知道是否有一种方法可以减少代码量,目前我对我希望在这 3 种类型中的任何一种上使用的所有方法重复这一点。
我能找到的唯一方法是使用通用方法定义一个接口,然后使用一个类来包装每个类型并实现该通用接口,但这似乎有很多代码可能是一种更简单的方法.
mvvm - Kotlin 扩展函数数据绑定
是否有可能将扩展功能与数据绑定一起使用?XML:
我的.package.domain.country.model.city
错误
[kapt] 发生异常:android.databinding.tool.util.LoggedErrorException:发现数据绑定错误。****/ 数据绑定错误 ****msg:在 my.package.domain.country.model.City 类中找不到方法 streetName()
谢谢 ;)
c# - 在 C# 中,我如何创建一个扩展方法,该方法采用带有泛型参数的 lambda,Func作为参数。
我正在尝试创建一个将 Func 作为参数的扩展方法,但出现错误。这是我得到的:
在行return f(s);
我得到一个错误:Error CS1503 Argument 1: cannot convert from 'string' to 'T'
如何指定具有泛型参数T
和泛型返回类型的泛型 lambda Func TResult
?
angular - 对象扩展功能 TypeScript Angular 6
为什么当我尝试代码时
它有效,但替换Object
会String
导致错误。我认为您可以毫无问题地扩展 Object 吗?
我的目标确实是模仿 Kotlinapply
和let
扩展功能 - 但我想了解如何/为什么可以/不能扩展对象?
arrays - Kotlin - Val 无法重新分配,但可以通过从索引访问重新分配?
我有这两个功能,我正在尝试修改元素。其中一个编译,另一个说'val不能被重新分配'。以下功能有什么区别?为什么一个编译而另一个不编译?
编译的那个
那个说
无法重新分配 Val
unit-testing - 在类中测试扩展函数
如果我们想测试一个类型的扩展函数,我们可以创建一个该类型的实例,调用该函数并检查返回值。但是测试类内部定义的扩展函数呢?
我们如何测试foo()
类中方法的逻辑SubClass1
和SubClass2
?甚至可能吗?
我知道我可以改变设计来测试它。我想到了两种可能:
不要使用扩展功能。¯\_(ツ)_/¯
然后我们可以创建一个对象
SubClass1
,调用foo()
并检查返回值。创建具有可见性的附加扩展函数
internal
只是为了测试逻辑。然后我们可以创建一个对象
String
,调用internalFoo()
并检查返回值。但是,我不喜欢这种解决方案,因为我们可以更改的主体override fun String.foo(): Int
并且我们的测试会通过。
那么,是否可以在类中测试扩展功能?如果不是,您将如何更改您的设计以测试他们的逻辑?
android - 在 kotlin 上从 this@ 更改名称
我有以下情况,一个名为save
fromMarker
1. 代码
代码对我来说很好。
2.问题
要使用Marker
insidesave
方法的实例,我需要 use this@save
,但这个名称并不具有暗示性,乍一看,它看起来不像Marker
.
3.问题
是否可以应用别名来代替使用this@save
?
非常感谢!
kotlin - 为什么 inc() 不能定义为与接收者类型不同的类中的扩展函数?
这是我在做 Koan N28 时遇到的:
但是,编译器在该operator
位置大喊大叫,说'operator' modifier is inapplicable on this function: receiver must be a supertype of the return type
. 为了让代码编译,我必须将扩展函数移到顶层。但是,如果我MyDate.unaryPlus()
在同一个地方重载,代码会编译。
saxon - 具有 NODE_SEQUENCE 或 ANY_SEQUENCE 的撒克逊扩展函数
我正在从 Saxon 9.3 (PE) 切换到更新的版本。我正在使用扩展函数(带有“扩展 ExtensionFunctionDefinition”)
我的论点定义为
在 XSLt 中,调用是使用例如第一个参数上的变量进行的,这是一个构建的 XML 部分。
接到电话,
我需要更改我的代码,因为 ExtensionFunctionCall 接口发生了变化(以前,我有
)
我现在有两个问题:
1) 参数类型从 SequenceIterator 更改为 Sequence。像这样
不能再使用了,并且
给我一个运行时错误
尽管收到的对象是 TinyTree(根据运行时进行的调试)。
2)返回值也不同(从SequenceIterator到Sequence)我之前有return new ListIterator(saxon_result);
这不再可能(saxon_result 是 java.util.ArrayList )在这里,我不知道如何将我的 ArrayList 作为序列发回......
有知识的人能解释一下吗?谢谢!法比安