2013-09-17 2 views
0

я определяю класс следующим образомOCaml ошибка определения класса

class dataframe (csv_filepath:string) = 
     object 
       (* Load the csv, make it square and print the first line *) 
       initializer 
        let print_first_line csv_filepath = 
         let f = Csv.square (Csv.load csv_filepath) in 
         let top_line = Csv.sub 0 0 1 (Csv.columns f) f in 
         Csv.print_readable top_line; 
         Printf.printf "\n"; 
     end;; 

и получаю сообщение об ошибке

end;; 
    ^^^ 
    Error: Syntax error 

Я не вижу ничего плохого в этом, я полностью потерял, кто-нибудь знает что происходит?

ответ

1

Вы должны написать выражение в инициализаторе. То, что вы пишете здесь, - это определение функции для фразельной фразы. Правильный инициализатор должен выглядеть ::

initializer 
    let print_first_line csv_filepath = 
    let f = Csv.square (Csv.load csv_filepath) in 
    let top_line = Csv.sub 0 0 1 (Csv.columns f) f in 
    Csv.print_readable top_line; 
    Printf.printf "\n" 
    in 
    (* Use print_first_line you defined *) 
    print_first_line csv_filepath 

или просто

initializer 
    let f = Csv.square (Csv.load csv_filepath) in 
    let top_line = Csv.sub 0 0 1 (Csv.columns f) f in 
    Csv.print_readable top_line; 
    Printf.printf "\n" 
Смежные вопросы