- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法在任何其他问题中找到答案。假设我有一个抽象父类(super class) Abstract0,它有两个子类 Concrete1 和 Concrete1。我希望能够在 Abstract0 中定义类似
def setOption(...): Self = {...}
val obj = new Concrete1.setOption(...).setOption(...)
abstract class Abstract0[T <: Abstract0[T]]
abstract class Abstract0 {
type Self <: Abstract0
}
class Concrete1 extends Abstract0 {
type Self = Concrete1
}
cái này
在 Abstract0 中没有 Self 类型。并使用
this: Self =>
在 Abstract0 中也不起作用。
1 Câu trả lời
这是什么this.type
是为了:
scala> abstract class Abstract0 {
| def setOption(j: Int): this.type
| }
defined class Abstract0
scala> class Concrete0 extends Abstract0 {
| var i: Int = 0
| def setOption(j: Int) = {i = j; this}
| }
defined class Concrete0
scala> (new Concrete0).setOption(1).setOption(1)
res72: Concrete0 = Concrete0@a50ea1
setOtherOption
Sau đó
(new Concrete0).setOption(1).setOtherOption(...)
会工作
abstract class Abstract0 {
type Self <: Abstract0
var i = 0
def copy(i: Int) : Self
def setOption(j: Int): Self = copy(j)
}
class Concrete0(i: Int) extends Abstract0 {
type Self = Concrete0
def copy(i: Int) = new Concrete0(i)
}
trait Abstract0Builder[To] {
def setOption(j: Int)
def result: To
}
trait CanBuildAbstract0[From, To] {
def apply(from: From): Abstract0Builder[To]
}
abstract class Abstract0 {
type Self <: Abstract0
def self = this.asInstanceOf[Self]
def setOption[To <: Abstract0](j: Int)(implicit cbf: CanBuildAbstract0[Self, To]): To = {
val builder = cbf(self)
builder.setOption(j)
builder.result
}
}
class Concrete0(i: Int) extends Abstract0 {
type Self = Concrete0
}
object Concrete0 {
implicit def cbf = new CanBuildAbstract0[Concrete0, Concrete0] {
def apply(from: Concrete0) = new Abstract0Builder[Concrete0] {
var i = 0
def setOption(j: Int) = i = j
def result = new Concrete0(i)
}
}
}
object Main {
def main(args: Array[String]) {
val c = new Concrete0(0).setOption(1)
println("c is " + c.getClass)
}
}
trait Abstract0[+Self <: Abstract0[_]] {
// ...
}
class Concrete0 extends Abstract0[Concrete0] {
// ....
}
class RefinedConcrete0 extends Concrete0 with Abstract0[RefinedConcrete0] {
// ....
}
关于scala - 如何使用 Scala 的 this 类型、抽象类型等来实现 Self 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4313139/
Tôi hơi bối rối về tính trừu tượng trong Java. Tôi đã kiểm tra nhiều trang nói rằng trừu tượng hóa là ẩn dữ liệu (ẩn triển khai). Theo tôi hiểu, trừu tượng là một "sự triển khai một phần". Chỉ cần xác định những gì bạn cần trong các lớp/giao diện trừu tượng, sau đó mở rộng/triển khai chúng và thêm
Tôi mới làm quen với Ruby, chủ yếu sử dụng C# và ActionScript 3 (cùng với một số ngôn ngữ khác). Tôi tò mò về chức năng trừu tượng. Cụ thể là gói và tóm tắt các thư viện FTP và SFTP của Ruby. Tôi tìm kiếm xung quanh và tìm thấy một
Nội dung Java cơ bản (Tóm tắt) Tóm tắt Định nghĩa của abstract Sử dụng abstract Định nghĩa của abstract class
Tôi đã dành thời gian trong tháng này để vật lộn với Emacs Lisp, cố gắng để chức năng tự động thụt lề hoạt động tốt hơn theo nhu cầu của tôi. Thật đáng ngạc nhiên khi hầu hết mã thụt lề ở cấp độ thấp. Tôi chỉ thấy một vài sự trừu tượng như tìm kiếm biểu thức chính quy đầu tiên không có trong chuỗi hoặc bình luận
Tôi có những điều sau đây: public abstract class Foo{ //nội dung của Foo // ... public class Bar mở rộng
Tôi có ba lớp (lớp A, lớp B và lớp C). Lớp A gọi một thể hiện của B và chạy start(). Lớp B mở rộng Thread, do đó khi start() được gọi, mọi thứ trong phương thức run() sẽ được thực thi. hiện hữu
Câu hỏi này đã có câu trả lời: Gọi phương thức lớp con từ lớp cha (5 câu trả lời) Đã đóng 7 năm trước. Klasse1 là lớp trừu tượng có một phương thức foo(). K
Tôi có một hàm như thế này: def test(): x = "3" # Trong mã thực tế, hàm này được tính nếu x là None: return
Tôi có mối quan hệ giữa hai lớp cơ sở: public abstract class RecruiterBase { // Thuộc tính khai báo ở đây // Các hàm tạo khai báo
Đây là lần đầu tiên tôi đăng bài và tôi đang gặp phải rất nhiều vấn đề. Hiện tại tôi có một lớp AbstractDevice có tiêu đề: public abstract class AbstractDevice> implements De
Tôi có một lớp MotorDefinition và một lớp trừu tượng có tên là Motor: class MotorDefinition { public: MotorDefinition(int p1,
Có cách nào để tạo các quy tắc trừu tượng của css trong loại mã này (sass): #cottage-image-gallery input:nth-of-type(1):checked ~ label:nth-o
Có thể khai báo một kiểu cơ sở đã biết và cho phép chuyển giao tất cả các kiểu dẫn xuất không? [ServiceContract] giao diện công khai IService { [OperationContract]
Hiện tại tôi đang phát triển cơ chế tạo nhân vật cho một trò chơi văn bản dựa trên Java, nhưng tôi gặp phải một vấn đề và không biết lỗi ở đâu. Tôi có lớp "Character" là lớp trừu tượng và một lớp khác là "NPCharacter" được xây dựng dựa trên lớp này.
Xin lỗi, tiêu đề gây nhầm lẫn. Không chắc chắn lắm về cách diễn đạt, có thể đó là vấn đề! Tôi đang tìm một sự trừu tượng tốt để sử dụng cho các tình huống liên quan đến luồng đồng thời. Tôi đã gần đến đích rồi, nhưng vẫn chưa hoàn toàn. Để đơn giản hóa một chút, tôi đã thu thập hai cảm biến trên điện thoại Android của mình
Cảm ơn bạn trước vì đã đọc bài viết này. Tôi không hiểu đầy đủ về cách/thời điểm sử dụng đoạn trích, vì vậy tôi cố gắng nghĩ về nó trong mọi dự án tôi làm và xem liệu một ngày nào đó mọi thứ có ổn không. Cười | :) Ngoài ra, các mức độ truy cập (riêng tư, được bảo vệ
Tôi đang khám phá meme XML -> XSLT -> HTML để tạo nội dung web. Tôi có rất ít kinh nghiệm với XSLT. Tôi tò mò muốn biết có những cơ chế nào trong XSLT để xử lý trừu tượng hóa hoặc "tái cấu trúc". Ví dụ, sử dụng HTML chung và
Trong các buổi nói chuyện này, Nicholas Zakas và Addy Osmani thảo luận về ý tưởng sử dụng mô hình facade như một hộp cát khi xây dựng các ứng dụng Javascript lớn nhằm tách ứng dụng khỏi các thư viện cơ sở bên dưới. Sự tách rời này về mặt lý thuyết cho phép
Tôi đang sử dụng C++ và CUDA/C và muốn viết mã cho một vấn đề cụ thể, nhưng tôi gặp phải một vấn đề đơn giản hóa rất khó khăn. Kinh nghiệm của tôi với lập trình song song không phải là không đáng kể nhưng khá hạn chế, và tôi không thể lường trước được hết những đặc thù của vấn đề này. Tôi nghi ngờ liệu có cách nào thuận tiện hay thậm chí là "dễ dàng" không
Giả sử tôi có: trait A class B extends A class C extends A Có cách nào để cấu hình tham số kiểu không: class Foo[AType <: A with canCreateIn
Tôi là một lập trình viên xuất sắc, rất giỏi!