Помогите, в середине перевода скрипта Python на Scala - PullRequest
1 голос
/ 08 сентября 2011

Я пытаюсь перевести: http://thinkstats.com/survey.py этот скрипт.

Итак, вот что я сейчас перевожу (Python):

"""This file contains code for use with "Think Stats",
by Allen B. Downey, available from greenteapress.com

Copyright 2010 Allen B. Downey
License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html
"""

import sys
import gzip
import os

class Record(object):
    """Represents a record."""

class Respondent(Record): 
    """Represents a respondent."""

class Pregnancy(Record):
    """Represents a pregnancy."""

Scala:

import sys.process._
import java.util.zip.GZIPInputStream
import java.io._

class Record[T](val obj: T)

class Respondent[T](val record: Record[T])

class Pregnancy[T](val record: Record[T])

Вопрос: Правильно ли я сделал class Respondent и class Pregnancy? Является ли аннотация типа правильной для этих классов? Правильна ли логика? Я только что прочитал о параметризации типа, так что я немного сомневаюсь в этом и хотел посмотреть, нахожусь ли я на правильном пути.

Спасибо за ваше время.

1 Ответ

5 голосов
/ 08 сентября 2011

Насколько я помню, синтаксис Python, который вы показываете, предназначен для расширения класса (наследование).Эквивалентным Scala будет

/** Represents a record.
 */
class Record

/** Represents a respondent.
 */
class Respondent extends Record

/** Represents a pregnancy.
 */
class Pregnancy extends Record

Комментарии Scala формы /** ... */ будут отображаться как документация в ScalaDoc.

Параметризация типа здесь не нужна.Его основное использование - позволить классам принимать или возвращать значения произвольного параметризованного типа.Например, List[Int] и List[String] являются списками целых чисел и строк соответственно.

...