match не работает?
От: Clerk  
Дата: 21.11.09 21:19
Оценка:
В последней ревизии компилятор ругается на след. код
using System;
using System.Console;
using Nemerle.Utility;

module Program
{
  variant RgbColor
  {
    | Red
    | Yellow
    | Green
    | Different
      {
        red : float;
        green : float;
        blue : float;
      }
  }

  MatchStringLiteral(lit : string) : RgbColor
  { | "yellow" => RgbColor.Yellow
    | "red"    => RgbColor.Red
    | "green"  => RgbColor.Green
    | _        => throw Exception();
  }

  Main() : void
  {
    WriteLine(MatchStringLiteral("green").ToString());
  }
}


Error    1    expected void -> Program.RgbColor.Yellow-, got void -> Program.RgbColor.Red in computation branch: common super type of types [void -> Program.RgbColor.Yellow, void -> Program.RgbColor.Red] is just `object', please upcast one of the types to `object' if this is desired    C:\_Other\2009.08.21\ConsoleApplication5\Main.n    22    20    ConsoleApplication5
Re: match не работает?
От: Аноним  
Дата: 21.11.09 21:29
Оценка: +1
Здравствуйте, Clerk, Вы писали:

Все работает. Просто в моем коди и в примере в http://www.rsdn.ru/article/nemerle/NemerleIntro.xml
Автор(ы): Сергей Туленцев, Владислав Чистяков
Дата: 23.05.2006
Производительность труда программиста в основном зависит от самого программиста. Однако даже самый опытный и знающий программист мало что может без подходящего инструмента. Эта статья открывает цикл статей об одном из таких инструментов, еще мало известном среди программистов, но очень многообещающем. Язык Nemerle, о котором пойдет речь в этих статьях, на первый взгляд очень похож на слегка улучшенный C#, но привносит многое из передовых исследовательских языков. Данная статья рассказывает об отличиях Nemerle от C# (как наиболее близкого языка)и является неформальным введением в язык.
не хватает в конце вариантов ()
Re: Вести с полей...
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.09 02:16
Оценка:
Здравствуйте, Clerk, Вы писали:

C>В последней ревизии компилятор ругается на след. код

C> { | "yellow" => RgbColor.Yellow()
C> | "red" => RgbColor.Red
C> | "green" => RgbColor.Green
...
C>Error 1 expected void -> Program.RgbColor.Yellow-

Дык. Все верно. Ты забал указать скобки привызове конструктора.
Без этого компилятор считает, что ты хочешь вернуть ссылку на конструктор.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.