[#395238] rubygem: ispunity (unite all your internet connections) — Arun Tomar <tomar.arun@...>

Dear friends,

12 messages 2012/05/01

[#395250] Overwriting one Ruby array or arrays with another — Craig Law <lists@...>

Hi

14 messages 2012/05/02

[#395258] array of strings - finding letter combinations — "Sebastjan H." <lists@...>

Hi All,

16 messages 2012/05/02

[#395357] Why Enumerator#next does not return more than one value? — Földes László <lists@...>

If I have an Enumerator which yields elements of a mathematical series

10 messages 2012/05/07

[#395373] How to use Data_Wrap_Struct to assign the DATA VALUE to an exsiting Ruby object? — Iñaki Baz Castillo <ibc@...>

Hi, my code receives an arbitrary klass name (provided by the user)

8 messages 2012/05/07

[#395429] passing via instance variable or regular () — sam jam <lists@...>

def first

10 messages 2012/05/10

[#395463] I'm looking for a Metaprogramming Project — Phil Stone <lists@...>

Hello,

19 messages 2012/05/11

[#395548] A million reasons why Encoding was a mistake — Marc Heiler <lists@...>

Newcomer wants to try Ruby.

15 messages 2012/05/15
[#395561] Re: A million reasons why Encoding was a mistake — Ryan Davis <ryand-ruby@...> 2012/05/15

[#395595] Re: A million reasons why Encoding was a mistake — Brian Candler <lists@...> 2012/05/16

I will add that the OP is not entirely alone in his opinion.

[#395551] How to ensure that a block runs entirely after other threads? (Thread.exclusive does not "work") — Iñaki Baz Castillo <ibc@...>

Hi, I expected that in the following example code, thread t1 would not

8 messages 2012/05/15

[#395575] GUI with ruby on windows — David Acosta <lists@...>

hello friends, i am a begginer and i have a litlle question, how can i

17 messages 2012/05/16

[#395604] what is going wrong here? — roob noob <lists@...>

Notice the initialization of both classes in each of the examples, if

20 messages 2012/05/16

[#395646] rb_gc_register_address() or rb_gc_mark()? — Iñaki Baz Castillo <ibc@...>

Hi, I've bad experiences with rb_gc_register_address(), it does never

16 messages 2012/05/17

[#395686] reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...>

Hi,

19 messages 2012/05/18
[#395694] Re: reading from and writing to a Unicode encoded file — Regis d'Aubarede <lists@...> 2012/05/18

Hello,

[#395697] Re: reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...> 2012/05/18

Regis d'Aubarede wrote in post #1061272:

[#395698] Re: reading from and writing to a Unicode encoded file — Regis d'Aubarede <lists@...> 2012/05/18

Sebastjan H. wrote in post #1061276:

[#395699] Re: reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...> 2012/05/18

Regis d'Aubarede wrote in post #1061277:

[#395750] Re: reading from and writing to a Unicode encoded file - issues when using Shoes — "Sebastjan H." <lists@...> 2012/05/21

Hi,

[#395754] Re: reading from and writing to a Unicode encoded file - issues when using Shoes — "Sebastjan H." <lists@...> 2012/05/21

Sebastjan H. wrote in post #1061483:

[#395740] ? Ruby through CGI and Rails — Shaun Lloyd <list@...>

Hi everybody,

22 messages 2012/05/21
[#395764] Re: Ruby through CGI and Rails — Brian Candler <lists@...> 2012/05/21

Shaun Lloyd wrote in post #1061455:

[#395786] Re: Ruby through CGI and Rails — Shaun Lloyd <list@...> 2012/05/22

On 22/05/12 03:37, Brian Candler wrote:

[#395838] Re: Ruby through CGI and Rails — Brian Candler <lists@...> 2012/05/23

Shaun Lloyd wrote in post #1061602:

[#395787] Changing self class from inside a method?? — David Madison <lists@...>

Let's start off with the assumption I want a method that allows an

10 messages 2012/05/22

[#395841] Memory-efficient set of Fixnums — George Dupre <lists@...>

Hi,

25 messages 2012/05/23

[#395883] looking for a ruby idiom : r=foo; return r if r — botp <botpena@...>

Hi All,

11 messages 2012/05/24

[#395966] Am I justified to use a global variable if it must be used in all scopes? — Phil Stone <lists@...>

Hello,

12 messages 2012/05/27

[#396010] does this leak more than the size of the string via timing side channels — rooby shoez <lists@...>

string1 = "string"

16 messages 2012/05/29

[#396038] Is it possible to avoid longjmp in exceptions, Thread#kill, exit(), signals? — Iñaki Baz Castillo <ibc@...>

Hi, my Ruby C extension runs a C loop (libuv) without GVL. At some

8 messages 2012/05/29

Re: what is going wrong here? The case of the noob not understanding initialize

From: "Jan E." <lists@...>
Date: 2012-05-17 20:37:23 UTC
List: ruby-talk #395663
roob noob wrote in post #1061170:
> Honestly I see very little difference between
>
> "
> message = "whatever"
> encrypt(message) #returns the AES-256 encryption of message
> "
>
> and
>
> "
> @message
> encrypt #returns the AES-256 encryption of @message
> "

The difference is that the first method works on its own. You don't need 
a certain context or specific preparations, you simply pass a string and 
get the encrypted string.

On the other hand, the second method is completely dependend on the 
outer world. You cannot even call it without having set the @message 
variable before. And you have to make sure the value isn't changed in 
the meantime (which makes the whole program rather "unstable" and 
completely unsuitable for threaded applications).

The worst thing is that these dependencies aren't even obvious from the 
code. You'd have to write a comment and explain which steps have to be 
taken. Otherwise, there will be strange errors like "nil doesn't have a 
+ method".

Well, if you only write small programs for yourself and don't plan to 
publish them, this all might be acceptable. But I wouldn't even start to 
adept this programming style, because it will get in your way as soon as 
your applications become bigger or you share the code with others.

This is a bit like arguing about if you can use a hammer to put a screw 
in. Well, if you only got a few screws and the result doesn't really 
matter, then you *can* do it. It does work. But it's the wrong way and 
it isn't suitable as a general approach.

By the way: Your programming style wouldn't even work in most other 
languages. It relies on the fact that Ruby is rather sloppy with 
instance variables and allows them to be created on the fly by any 
method. In more strict programming languages, every variable has to be 
declared first, which would make the whole approach rather tedious.



roob noob wrote in post #1061186:
> sorry for post spam, but would this be the appropriate way to do it? I
> still prefer the @ way, but I want to do things right.
>
>  class AddNumbersAndLetters
>
>      def get_input
>        input = gets.chop
>        input = add_numbers(input)
>        input = add_letters(input)
>        input = add_letters(input)
>        input = add_numbers(input)
>        input = add_letters(input)
>      end
>
>      def add_numbers(input)
>        input += "123"
>      end
>
>      def add_letters(input)
>         input += "abc"
>      end
>   end

Yes, this makes a lot more sense. A more advanced approach would be to 
only write a "rule" how the string should be built and then let the 
program do the actual method chaining on its own:

input = gets.chop
transform_input = [
  :add_numbers,
  :add_letters,
  :add_letters,
  :add_numbers,
  :add_letters
]
transform_input.inject input do |result, method|
  send method, result
end

See
http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-inject
on how the inject method works.

By the way, you should replace the "+=" with a simple "+". You don't 
want to reassign the input parameter but simply get the result of adding 
"123" to input.

-- 
Posted via http://www.ruby-forum.com/.

In This Thread