Jak ustawić MathContext dla BigDecimal w deklaracji tablicy

Jak ustawić MathContext dla BigDecimal w deklaracji tablicy
  • Rejestracja: dni
  • Ostatnio: dni
0

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

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

Tylko jak tu ustawić ten MathContext?

@Wibowit - może coś poradzisz?

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
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):

Kopiuj
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.

  • Rejestracja: dni
  • Ostatnio: dni
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.

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
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ę.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.