Jak ustawić MathContext dla BigDecimal w deklaracji tablicy

0

Chciałbym ustawić MathContext dla BigDecimal ale deklaruję:

  
var delta_in= Array.ofDim[BigDecimal](3);

Tylko jak tu ustawić ten MathContext?

@Wibowit - może coś poradzisz?

0

Ojj, dawno w Scali nie pisałem.

Spróbuję zgadnąć. Twój kod robi tablicę o rozmiarze 3, wypełnioną nullami, mogącą przetrzymywać BigDecimale. Ty chcesz stworzyć tablicę wypełnioną trzema BigDecimalami. Jeśli wszystkie 3 BigDecimale mają być takie same, to możesz użyć czegoś takiego (nie wiem czy wypali):

val element = ... // tutaj tworzysz BigDecimala z odpowiednim MathContextem
val delta_in = Array.fill(3)(element)

BigDecimale są immutable, więc nie ma sensu tworzyć 3 identycznych BigDecimali.

Przykład: http://ideone.com/hp6nNk
Ustawianie MathContextu jest trywialne tutaj, wystarczy podać jako parametr konstruktora BigDecimala.

0

Dzięki, dziś sprawdzę.
Mam jeszcze jedno pytanie. Dlaczego słowo kluczowe val a nie var skoro "val defines a fixed value (which cannot be modified)" -> http://stackoverflow.com/questions/4437373/use-of-def-val-and-var-in-scala a moje BigDecimale są zmienne.

1

val ze Scali to odpowiednik final z Javy, a jak wiadomo final jest płytki. Jego efekt jest taki, że chroni przed zmianą danego pola, czy to referencji czy prymitywu. Nie chroni jednak przed zmianą obiektu wskazywanego przez referencję.

Inaczej mówiąc, zarówno final jak i var oznaczają, że do danego pola nie można nic powtórnie przypisać. W przypadku prymitywów ma to efekt stałej, natomiast w przypadku referencji niekoniecznie - zależy od dodatkowych zabezpieczeń w obiekcie wskazywanym przez taką referencję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1