🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.ruby
6 messages
6 total messages Started by edek Tue, 19 Feb 2008 10:59
Powtarzany blok kodu
#933
Author: edek
Date: Tue, 19 Feb 2008 10:59
16 lines
948 bytes
Witam,

w swojej aplikacji często powtrzam kod

for time in ['morning', 'afternoon', 'evening', 'night'] do
#  (mój kod)
end

jak można zapisać to jakąś formułą, by nie pisać tego za każdym razem? Typu:

costam do
#  (mój kod)
end


m.
Re: Powtarzany blok kodu
#934
Author: Piotr 'piter' Hlawski
Date: Tue, 19 Feb 2008 12:01
32 lines
1631 bytes
edek wrote:

> Witam,
> 
> w swojej aplikacji często powtrzam kod
> 
> for time in ['morning', 'afternoon', 'evening', 'night'] do
> #  (mój kod)
> end
> 
> jak można zapisać to jakąś formułą, by nie pisać tego za każdym razem?
> Typu:
> 
> costam do
> #  (mój kod)
> end

Może tak (pisane na szybko):

def costam(arr = ['morning', 'afternoon', 'evening', 'night'])
  arr.each do |x|
    yield(x) if block.given?
  end
end

costam do |a|
  # Twój kod, np:
  puts a
end

-- 
[ Piotr 'piter' Hlawski ( <phlawski$gmail,com> ) ( GG: 4534287 ) ]
Re: Powtarzany blok kodu
#935
Author: Piotr 'piter' Hlawski
Date: Tue, 19 Feb 2008 12:09
31 lines
1715 bytes
Piotr 'piter' Hlawski wrote:

> edek wrote:
> 
>> Witam,
>> 
>> w swojej aplikacji często powtrzam kod
>> 
>> for time in ['morning', 'afternoon', 'evening', 'night'] do
>> #  (mój kod)
>> end
>> 
>> jak można zapisać to jakąś formułą, by nie pisać tego za każdym razem?
>> Typu:
>> 
>> costam do
>> #  (mój kod)
>> end
> 
> Może tak (pisane na szybko):
> 
> def costam(arr = ['morning', 'afternoon', 'evening', 'night'])
>   arr.each do |x|
>     yield(x) if block.given?
>   end
> end

poprawka, if block_given? oczywiście

-- 
[ Piotr 'piter' Hlawski ( <phlawski$gmail,com> ) ( GG: 4534287 ) ]
Re: Powtarzany blok kodu
#936
Author: edek
Date: Wed, 20 Feb 2008 08:41
3 lines
887 bytes
dzięki!

m.
Re: Powtarzany blok kodu
#937
Author: edek
Date: Fri, 22 Feb 2008 16:11
39 lines
1863 bytes
OK, a jak w railsach można zrobić coś takiego. Definiuję w application 
helper kod, który ma mi generować HTMLa z zakładkami:

   def tabbox(headers)
     # Tutaj powinien wypluć parę tagów
     # otwierających diva zakładkami itd.

     headers.each do |x|
	# Tutaj powinien wypluć parę tagów
         # z nagłówkami zakładek
     end

     headers.each do |x|
       yield(x) if block_given?
     end

     # Tutaj powinien wypluć parę tagów
     # zamykających zakładki

   end


Przewidywany sposób użycia wyglądałby mniej więcej tak:

tabbox(['zakladka1', 'zakladka2']) do |tab|
   case tab
     when 'zakladka1'
       # renderowanie tresci zakladki 1

     when 'zakladka2'
       # renderowanie tresci zakladki 2
   end
end

Jestem w stanie to zrobić normalnie w rubym, tam gdzie piszę, że "tutaj 
powinno wypluć kod" wystarczy dać puts, ale w railsach to nie działa. 
Jakiej metody powinienem użyć?

m.
Re: Powtarzany blok kodu
#938
Author: Przemysław Kowalczyk
Date: Fri, 22 Feb 2008 17:05
49 lines
2255 bytes
On Fri, 22 Feb 2008 17:11:35 +0100, edek <akjdjkdaiu@amazon.com> wrote:

> OK, a jak w railsach można zrobić coś takiego. Definiuję w application  
> helper kod, który ma mi generować HTMLa z zakładkami:
>
>    def tabbox(headers)
>      # Tutaj powinien wypluć parę tagów
>      # otwierających diva zakładkami itd.
>
>      headers.each do |x|
> 	# Tutaj powinien wypluć parę tagów
>          # z nagłówkami zakładek
>      end
>
>      headers.each do |x|
>        yield(x) if block_given?
>      end
>
>      # Tutaj powinien wypluć parę tagów
>      # zamykających zakładki
>
>    end

najprostszy sposob to taki, zeby ta metoda zwracala stringa. mozesz go  
sobie w niej zlepic w dowolny sposob

> Przewidywany sposób użycia wyglądałby mniej więcej tak:
>
> tabbox(['zakladka1', 'zakladka2']) do |tab|
>    case tab
>      when 'zakladka1'
>        # renderowanie tresci zakladki 1
>
>      when 'zakladka2'
>        # renderowanie tresci zakladki 2
>    end
> end
>
> Jestem w stanie to zrobić normalnie w rubym, tam gdzie piszę, że "tutaj  
> powinno wypluć kod" wystarczy dać puts, ale w railsach to nie działa.  
> Jakiej metody powinienem użyć?

<%= tabbox(...) %>

pzdr
	szeryf

-- 
Przemysław ,,Szeryf'' Kowalczyk :: http://szeryf.wordpress.com/
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads