Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 18.11.2014, 17:01   #1 (permalink)
mihailvt
Новичок
 
Регистрация: 18.11.2014
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Книга Хорстманна "Scala для нетерпеливых"

Почему, если вызвать
sqrt
при
import scala.math._
то вызов сработает? Ведь класс метода всё-таки не указан.

При этом на метод probablePrime класса BigInt ругается, даже если напрямую указать
import scala.math.BigInt

Притом автор в упражнениях требует в первой же главе, чтобы добились выполнения probablePrime без префикса.
mihailvt вне форума   Ответить с цитированием

Старый 18.11.2014, 17:01
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Советую вам посмотреть уже обсуждаемые аналогичные темы

На Конкурс "13 друзей моддинга" Кейс в стиле "Русская глубинка" от George Smith
Гази Эммеджи эфенди. Проект "Русский стимпанк". Серия "Враги"
Капрал янки Джебедайя Сэмуел. Проект "Русский стимпанк". Серия "Враги"

Старый 18.11.2014, 18:56   #2 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 766
Записей в дневнике: 1
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

BigInt подразумевает целые числа. А после выполнения корня, может получится и дробное.
Gruvi вне форума   Ответить с цитированием
Старый 18.11.2014, 21:57   #3 (permalink)
mihailvt
Новичок
 
Регистрация: 18.11.2014
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Это два разных вопроса.
1. Когда я делаю import scala.math._ то вызов sqrt работает. То есть, методы соответствующего класса вызываются. В принципе, так, наверное, должно быть, хотя с точки зрения Явы необычно.
2. Хорстманн дал задание сделать такой импорт, чтобы
probablePrime( 100, Random )
работала бы без префиксов.
Для рандома делается хорошо, можно написать
import scala.util.Random
и всё хорошо. Для probablePrime не получается ни в какую, ни через импорт всего пакета math, ни через импорт конкретного класса. Что особенно странно на фоне выполнения sqrt как из пушки. Может быть, можете подсказать, что нужно сделать, чтобы выполнить задание Хорстманна ?
mihailvt вне форума   Ответить с цитированием
Старый 18.11.2014, 22:32   #4 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 766
Записей в дневнике: 1
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

def isProbablePrime(certainty: Int): Boolean
Возвращает true, если этот BigInt, вероятно, главный. ложный, если это - определенно составной объект.

Это мера неопределенности, которую вызывающая сторона готова терпеть: если вызов возвращает true вероятность, что этот BigInt главный, превышает (1 - 1/2 ^ уверенность). Время выполнения этого метода пропорционально значению этого параметра.

А вообще для скалы, есть хороший сайт Scala Standard Library API (Scaladoc) 2.10.3

Слева сверху в поиске вводишь команду и она пишет тебе что за команда,тип, и т.п. и т.д.
Gruvi вне форума   Ответить с цитированием
Старый 19.11.2014, 00:00   #5 (permalink)
mihailvt
Новичок
 
Регистрация: 18.11.2014
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Совершенно верно. Именно там, введя BigInt, я вижу его в пакете scala.math и вижу у объекта функцию
def probablePrime(bitLength: Int, rnd: Random): BigInt
которую никак не могу вызвать без префикса, как того хочет Хортсманн.
mihailvt вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 19.11.2014, 15:52   #6 (permalink)
mihailvt
Новичок
 
Регистрация: 18.11.2014
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

По поводу sqrt вопрос снимается: в Скале есть функции пакетов. Я принимался как-то раньше за Скалу и успел забыть

А вот с probablePrime по-прежнему непонятно
mihailvt вне форума   Ответить с цитированием
Старый 08.12.2014, 15:02   #7 (permalink)
mihailvt
Новичок
 
Регистрация: 18.11.2014
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

С probablePrime всё понятно. В Скале есть импорт членов классов. Чтобы избежать наименования класса, надо импортировать не класс, а его члены, т.е. импортировать BigInt._
mihailvt вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:54.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.