Дополнение распечатанного вывода табличных данных

Я обнаружил, что в vaadin 8 используется bindInstanceFields для привязки данных формы к классу.

Binder binder = new Binder<Student>(Student.class);

binder.bindInstanceFields(this);
binder.readBean(student);
11
задан Nakilon 21 September 2016 в 18:27
поделиться

3 ответа

Это - довольно полный пример, который принимает следующее

  • Ваш список продуктов содержится в файле под названием veg.txt
  • Ваши данные расположены через три строки на запись с полями на последовательных строках

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

#!/usr/bin/ruby

class Vegetable

  @@max_name ||= 0  
  @@max_variety ||= 0  
  @@max_container ||= 0  

  attr_reader :name, :variety, :container

  def initialize(name, variety, container)
    @name = name
    @variety = variety
    @container = container  

    @@max_name = set_max(@name.length, @@max_name)  
    @@max_variety = set_max(@variety.length, @@max_variety)  
    @@max_container = set_max(@container.length, @@max_container)
  end

  def set_max(current, max)
    current > max ? current : max
  end

  def self.max_name  
    @@max_name  
  end  

  def self.max_variety  
    @@max_variety  
  end  

  def self.max_container()  
    @@max_container  
  end  

end

    products = []


    File.open("veg.txt") do | file|

      while name = file.gets
        name = name.strip
        variety = file.gets.to_s.strip
        container = file.gets.to_s.strip
        veg = Vegetable.new(name, variety, container)
        products << veg
      end
    end

    format="%#{Vegetable.max_name}s\t%#{Vegetable.max_variety}s\t%#{Vegetable.max_container}s\n"
    printf(format, "Name", "Variety", "Container")
    printf(format, "----", "-------", "---------")
    products.each do |p|
        printf(format, p.name, p.variety, p.container)
    end

Следующий файл примера

Artichoke
Green Globe, Imperial Star, Violetto
24" deep
Beans, Lima
Bush Baby, Bush Lima, Fordhook, Fordhook 242
12" wide x 8-10" deep
Potatoes
King Edward, Desiree, Jersey Royal
36" wide x 8-10" deep

Произведенный следующий вывод

       Name                                      Variety                Container
       ----                                      -------                ---------
  Artichoke         Green Globe, Imperial Star, Violetto                 24" deep
Beans, Lima Bush Baby, Bush Lima, Fordhook, Fordhook 242    12" wide x 8-10" deep
   Potatoes           King Edward, Desiree, Jersey Royal    36" wide x 8-10" deep
7
ответ дан 3 December 2019 в 00:44
поделиться

Попробовать String#rjust(width):

"hello".rjust(20)           #=> "               hello"
18
ответ дан 3 December 2019 в 00:44
поделиться

Kernel.sprintf должен запустить Вас.

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

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