Почему не Подключается с консоли. Работа Readline, но Консоль. Readline () делает?

Я понимаю, что у вас месяц является целочисленным значением, а не объектом даты. Фильтр даты работает только с форматированной датой или миллисекундой как строки, миллисекунды как целое число или объект Date.

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

Контроллер:

angular.module('demo', [])
  .controller('DemoCtrl', function($scope) {
      // here's the original value
      $scope.month = 0; // 0 for january, 11 for december

      // watch for changes to the value of month. turn it into a new date object that angular can bind and filter in the view
      $scope.$watch('month', function(val) {
        // note: if you are expecting the month value to be one-indexed, you'll need to subtract 1 from val to make it zero-indexed as Date expects
        $scope.date = new Date(2014, val);
      });
    });

Просмотр:

{{ date | date:'MMMM' }}

См. Этот пример .

Другой вариант - использовать сервис $filter напрямую, если вам нужен более прямой способ преобразования значения. Вы делаете в основном то же самое, просто форматируя значение в контроллере, а не в представлении.

Контроллер:

// Code goes here
angular.module('demo', [])
  .controller('DemoCtrl', function($scope, $filter) {
      // here's the original value
      $scope.month = 0;

      // watch for changes to the value of month, and then format it directly
      $scope.$watch('month', function(val) {
        $scope.date = $filter('date')(new Date(2014, val), 'MMMM');
      });
    });

Просмотр:

{{ date }}

Альтернативный пример

10
задан svick 7 March 2012 в 13:29
поделиться

3 ответа

Если вы используете

let s = Console.ReadLine

, вы создаете только делегат, который указывает на функцию ReadLine. Вам нужно сказать

let s = Console.ReadLine()

, чтобы фактически выполнить функцию. Это похоже на синтаксис C #, за исключением того, что вывод типа означает, что вы не получаете предупреждения компилятора.

29
ответ дан 3 December 2019 в 13:56
поделиться

Что вы имеете в виду, говоря «это не соблюдается»? Вот небольшое консольное приложение, которое я только что написал на VS2010b1, и оно отлично работает:

open System

let line = Console.ReadLine()
Console.WriteLine("You wrote {0}", line)

// Just to make it pause
let unused = Console.ReadLine()

Вы пытаетесь запустить код из F # Interactive в Visual Studio? Если да, то это может быть проблемой, как объясняет сообщение Брайана.

Однако я не видел такой же проблемы при использовании F # Interactive из командной строки. Вот полная стенограмма сеанса:

Microsoft F# Interactive, (c) Microsoft Corporation, All Rights Reserved
F# Version 1.9.6.16, compiling for .NET Framework Version v4.0.20506

Please send bug reports to fsbugs@microsoft.com
For help type #help;;

> open System;;
> let line = Console.ReadLine();;
Hello world

val line : string = "Hello world"

Выполнение кода цикла Брайана из F # Interactive не показало той же проблемы.

Итог: Похоже, что это не работает в F # Interactive в Visual Studio, но не при интерактивном запуске из командной строки или в полном консольном приложении.

8
ответ дан 3 December 2019 в 13:56
поделиться

У меня нет под рукой блока Beta1, но я знаю, что в прошлом у нас была ошибка, из-за которой ReadLine () мог видеть фоновые команды, которые взаимодействуют между интерактивным пользовательским интерфейсом и фоновый процесс, запускающий ваш код F #. Может быть интересно исследовать, что печатает

let Foo max =
    let rec Loop i =
        if i < max then
            let line = System.Console.ReadLine() 
            printfn "line = %s" line
            Loop (i+1)
    Loop 1

Foo 12

, когда вы выделяете это и «Отправить в интерактивный режим». Думаю, возможно, вы увидите несколько неожиданных интересных строк, за которыми следуют строки, которые вы вводите в окно.

3
ответ дан 3 December 2019 в 13:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: