ограничение комментирования

В Ruby 1.9 были смягчены условия окончания строки, так что теперь мы можем начинать строку с точки, показывающей вызов метода. Это удобно, когда мы смешали связанные и несвязанные методы и хотим показать, где начинается следующий несвязанный. Без этой новой функции лучшее, что мы могли бы сделать, это, вероятно, использовать отступ:

method1(args1).
  method2(args2).
  method3(args3)
method4(args4).
  method5(args5).
  method6(args6)

или вставить пустую строку. Но это было неудобно, потому что мы должны обращать внимание на отступы и в то же время не забывать ставить точку после каждого вызова метода, кроме последнего в цепочке. Из-за этого я создал так много ошибок с лишним или отсутствующим периодом. С новой функцией мы можем сделать это намного лучше:

method1(args1)
.method2(args2)
.method3(args3)
method4(args4)
.method5(args5)
.method6(args6)

где точка визуально функционирует как маркеры с отступом.

Проблема в том, что, когда вы хотите вставить комментарии перед строкой, начинающейся с точки, она возвращает ошибка.

method1(args1)
# method2 does blah blah
.method2(args2)
# method3 then does foo foo
.method3(args3)
method4(args4)
# method5 does blah blah
.method5(args5)
# method6 then does bar bar
.method6(args6)

# => error

или

method1(args1)
 # method2 does blah blah
.method2(args2)
 # method3 then does foo foo
.method3(args3)
method4(args4)
 # method5 does blah blah
.method5(args5)
 # method6 then does bar bar
.method6(args6)

# => error

Кажется, что "# ...." не просто сброшено, но каким-то образом взаимодействует с кодом. Что случилось? Какое здесь точное ограничение? Когда точки стояли в конце строки, этого не происходило. {общедоступный тип EventType {получить; установлен; } общедоступная строка Source {get; установлен; } } public enum EventType: int {...

У меня следующая структура:

Модель

public class EventEntry : LogEntry
{
    public EventType Type { get; set; }

    public string Source { get; set; }
}

public enum EventType : int
{
    Information = 1,
    Warning = 2,
    Error = 3
} 

Представление

<div id="grid">
@{
    var grid = new WebGrid(canPage: true, rowsPerPage: Ctrl.PageSize, canSort: true, ajaxUpdateContainerId: "grid");
    grid.Bind(Model.Events, rowCount: Model.TotalRecords, autoSortAndPage: false);

    grid.Pager(WebGridPagerModes.All);
    @grid.GetHtml(htmlAttributes: new { id="grid" },
            columns: grid.Columns(
            grid.Column("Type"),
            grid.Column("Source"));    
}
</div>

Контроллер

public ActionResult Index(int? page, string sort, string sortdir) {...}

Когда я нажимаю на столбец «Источник», который имеет строку типа, sordir изменится с «ASC» на «DESC», но когда я пробую то же самое в столбце «Тип», sordir всегда будет возвращать «ASC».

5
задан Stefan P. 16 April 2011 в 14:07
поделиться