Pertanyaan Gaya Scala untuk daftar parameter kelas kosong


Saat membuat objek tanpa parameter kelas, saya mengalami kesulitan memutuskan apakah saya harus menyertakan tanda kurung kosong atau tidak. Contoh spesifik: Saya berinteraksi dengan kode Java yang ada, dan membuat objek yang mengimplementasikan antarmuka yang disebut EventResponder. Haruskah saya menulis:

val service = new EventResponder() {
  def respond(message: String): String = {
    return ""
  }
}

atau

val service = new EventResponder {
  def respond(message: String): String = {
    return ""
  }
}

(Atau, BTW, apakah ada hal lain yang harus saya ubah di sini?)

Keduanya tampaknya berfungsi, dan sejauh yang saya lihat, panduan gaya Scala tidak memiliki rekomendasi untuk ini. Ini berbicara tentang kapan harus memasukkan tanda kurung kosong untuk metode atau arity-0, tapi itu bukan kasus yang sama.


4
2017-10-26 13:50


asal


Jawaban:


Anda dapat menggunakan ini untuk membedakan antara kelas (parens kosong) dan antarmuka (tidak ada parens) di dunia Java atau kelas (parens kosong) dan sifat (tidak ada parens) di dunia Scala.

Anda juga bisa, analog dengan metode, membedakan antara instantiations dengan efek samping (parens kosong) dan mereka yang tidak (tidak ada orang tua). Meskipun, saya kira, seorang konstruktor idealnya tidak pernah memiliki efek samping ...

Anda juga bisa membedakan antara objek yang membawa status / dapat berubah (parens kosong) dan yang tidak dapat diubah (tidak ada orang tua). Meskipun demikian, hal ini bertentangan dengan kelas kasus yang harus berubah tetapi tidak disarankan untuk tidak menggunakan orang tua di sini ...

Saya pribadi cenderung meninggalkan tanda kurung kosong jika memungkinkan. Dua karakter lebih sedikit, lebih mudah dibaca.


5
2017-10-26 14:15



Jika itu berlebihan, tinggalkan saja. Semakin sedikit kekacauan, semakin mudah untuk membaca.

val service = new EventResponder {
  def respond(message: String) = ""
}

1
2017-10-26 14:11



Biasanya orang tua yang kosong digunakan dengan metode untuk menunjukkan bahwa metode tersebut memiliki efek samping. Tampaknya jika konstruktor memiliki efek samping, itu akan menjadi bentuk yang baik untuk mengikuti pedoman yang sama karena pada dasarnya Anda akan menunjukkan bahwa metode yang berlaku akan memiliki efek samping.


1
2017-10-26 15:55