2017-01-13 7 views
0

Ich habe einige seltsamen Verhalten bemerkt, wenneinen Datenrahmen innerhalb eines erstellen if-Anweisung

Zum Beispiel einen Datenrahmen innerhalb einer bedingten Anweisungen zu erstellen:

val bla = 3 
case class Test(foo: Int) 

val test = if (bla == 1){ 
    println("foo") 
} else {Seq(4,5,6).toDF} 

Returns All

während des folgenden Code zurückkehren ein Datenrahmen

val bla = 3 
case class Test(foo: Int) 

val test = if (bla == 1){ 
    Seq(1,2,3).toDF 
} else {Seq(4,5,6).toDF} 

Antwort

1

Das ist, weil Rückgabetyp von println ist Unit, so muss Compiler gemeinsam übergeordneten Typen von DataFrame und Unit wählen - es ist Any

Sie müssen Datenrahmen in if erstellen und else, dh leerer Datenrahmen

Variable mit Datenrahmen Typ der letzte Ausdruck in beide if sein müssen und else Block

+1

LOL du warst schneller als ich :) – eliasah

+1

@eliasah Gestern (oder vor zwei Tagen) Ich posten Antwort weniger als eine Minute vor anderen: D –

+1

Das war 13 Sekunden vor mir: P – eliasah

Verwandte Themen