我正在尝试使用此代码进行简单的缩放/平移解决方案
var map = document.getElementById('map'),
svg = d3.select('#map')
.call(d3.behavior.zoom().on("zoom", function () {
svg.attr("transform", "translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")")
}))
.append('g');
Run Code Online (Sandbox Code Playgroud)
但在这一刻它给:
Uncaught TypeError: Cannot read property 'zoom' of undefined
Run Code Online (Sandbox Code Playgroud)
在HTML中,我有这个:
<svg id="map" class="map" viewBox="0 0 8000 2000"></svg>
Run Code Online (Sandbox Code Playgroud)
PS灵感来自于此
据说我有PersonImpl<Base : IPerson>泛型类,IPersonPerson 的接口在哪里。我正在尝试这样做
interface IPerson {
fun getName(): String
}
interface IPoliceMan : IPerson {
fun getDepartmentName(): String
}
open class PersonImpl<T: IPerson>(private val name: String) : T
Run Code Online (Sandbox Code Playgroud)
进而
class PoliceMan(private val departmentName: String, name: String) : PersonImpl<IPoliceMan>(name)
Run Code Online (Sandbox Code Playgroud)
所以,我希望编译器说,我需要实现 getDepartmentName()的PoliceMan,但这是不可能的,因为只有类和接口可作为超类型
所以唯一的变种是这样的
class PoliceMan(private val departmentName: String, name: String) : IPoliceMan, PersonImpl<IPoliceMan>(name)
Run Code Online (Sandbox Code Playgroud)
与界面重复。
我可以在 Kotlin(或 Java)中有泛型超类型吗?
PS 如果不可能,是否有任何机制可以模拟这种行为?