Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej
Jak uzyskać losową wartość logiczną true lub false w Ruby?
Czasami trzeba uzyskać losową wartość boolean true/false w Ruby. Na przykład, gdy robimy seed bazy danych w Rails i chcemy stworzyć obiekty jak najbardziej zbliżone do rzeczywistych.
Opcja pierwsza. Metoda sample:
[true, false].sample
Aby przetestować, jak zawsze - uruchamiamy IRB (Interactive Ruby Shell) w terminalu:
Opcja druga. Wymieszać (metoda shuffle) tablicę [true, false] i wziąć pierwszy lub drugi element używając indeksu.
Wymieszujemy elementy w tablicy:
[true, false].shuffle
Po tym bierzemy pierwszy [0] lub drugi [1] element wymieszanej tablicy:
[true, false].shuffle[0]
lub
[true, false].shuffle[1]
Opcja trzecia. Uzyskać losową cyfrę za pomocą metody rand i porównać z jedną z nich.
1. Uzyskujemy losowo 0 lub 1;2. Porównujemy uzyskaną cyfrę, na przykład z 1.
Losowa cyfra:
rand(2)
=> 0
rand(2)
=> 1
Porównanie:
rand(2) == 1
=> false
rand(2) == 1
=> true
Opcja czwarta. Zmodyfikowana trzecia opcja (z metodą zero?):
rand(2).zero?
Metoda zero? pyta, czy cyfra jest równa 0. Tutaj trzeba rozumieć, że rand(2) daje 0 lub 1.
Więc zero? jest ładniejszą opcją porównania X == 0
Opcja 5. Biblioteka Faker.
Prawie zawsze można zobaczyć w projekcie bibliotekę Faker, która pozwala uzyskać fałszywe dane (do tworzenia testowych obiektów).
W czystym ruby można zainstalować Faker:
gem install 'faker'
łączymy bibliotekę
require 'faker'
Uzyskujemy losową wartość boolean za pomocą Faker:
Myślę, że można znaleźć jeszcze wiele sposobów na uzyskanie losowej wartości boolean w Ruby. To właśnie czyni Ruby świetnym. Tę samą zadanie można wykonać na wiele sposobów. A prawie wszystkie będą 'poprawne'. Tutaj już chodzi o szybkość wykonania kodu i jego styl (jak łatwo jest go czytać i rozumieć).