Этот «объект» может быть непревзойденным - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь суммировать внутри кортежа, используя шаблон соответствия. Вот что я сделал

let rec sum = function
  | [] -> (0,0,0,0)
  | obj::rest -> let (cc, cd, cr, ca) = sum rest in
      (obj#method1 + cc, obj#method2 + cd
       obj#method3 + cr, obj#method4 + ca) in 

Эта рекурсивная функция может принимать список объектов и возвращать кортеж, например (12893, 82382, 182942, 348934)

Я получил ошибку This 'object' might be unmatched. Как можно решить эту проблему?

ОБНОВЛЕНИЕ

  method the_method (pays:string) =
    
    let obj_list = self#return_data_country
    let rec sum = function
      | [] -> (0,0,0,0)
      | obj::rest -> let (cc, cd, cr, ca) = sum rest in
          (obj#method1 + cc, obj#method2 + cd
           obj#method3 + cr, obj#method4 + ca) in 
    
    let sum_cc, sum_cd, sum_cr, sum_ca = sum obj_list in
    let basic_info = (nth obj_list 0) in

    ("\nCountry : " ^ basic_info#method5 ^ "\n" ^
     "UPDATE: " ^ basic_info#method6 ^ "\n" ^
     "CC: " ^ string_of_int sum_cc ^ "\n" ^
     "CD: " ^ string_of_int sum_cd ^ "\n" ^
     "CR: " ^ string_of_int sum_cr ^ "\n" ^
     "CA: " ^ string_of_int sum_ca ^ "\n" ^)

Ответы [ 2 ]

1 голос
/ 10 июля 2020

В вашем коде я вижу значение self, которое никогда не определяется в фрагменте, который вы нам дали.

Я думаю, где-то до того, как вы определяли объект как что-то вроде let blabla = object(self), и вы забыли закрыть если с ключевым словом end.

1 голос
/ 09 июля 2020

Это сообщение об ошибке говорит о буквальном токене object. У вас есть object без соответствия end. Как говорит @Yawar, ошибка не в строках, которые вы здесь показываете.

Обновление

Если эта копия / вставка точна, у вас есть следующее:

 "CA: " ^ string_of_int sum_ca ^ "\n" ^)

В конце строкового выражения есть странный оператор ^.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...