Aklınızda vardı, ama yapacak bir match
açıklamada, bu Person
vaka sınıfına saygılarımla değişikliklerle çok genel ya da genişletilebilir değil, ama yansıma kullanmama temel gereklilikleri karşılıyorsa tam olarak ne olduğunu bilmiyorum: Yorumlarınız göre
scala> val a = Person("test",10)
a: Person = Person(test,10)
scala> def extract(p: Person, fieldName: String) = {
| fieldName match {
| case "name" => p.name
| case "age" => p.age
| }
| }
extract: (p: Person, fieldName: String)Any
scala> extract(a, "name")
res1: Any = test
scala> extract(a, "age")
res2: Any = 10
scala> extract(a, "name####")
scala.MatchError: name#### (of class java.lang.String)
at .extract(<console>:14)
... 32 elided
GÜNCELLEME:
scala> case class Person(name: String, age: Int)
defined class Person
scala> val a = Person("test",10)
a: Person = Person(test,10)
scala> def extract(p: Person, fieldName: String) = {
| fieldName match {
| case "name" => Some(p.name)
| case "age" => Some(p.age)
| case _ => None
| }
| }
extract: (p: Person, fieldName: String)Option[Any]
scala> extract(a, "name")
res4: Option[Any] = Some(test)
scala> extract(a, "age")
res5: Option[Any] = Some(10)
scala> extract(a, "name####")
res6: Option[Any] = None
scala>
Ve değeri güvenli bir şekilde ayıklamak istiyorum. Yani, eğer alan yok ise, hiç bir şey almamalıyım. – Sidhant
Hangi kullanım durumunda, bir 'Kişinin' '' '' '' '' '' yaş '' olması beklenemez? –