Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: brogoff@speakeasy.net
To: Richard Jones <rich@annexia.org>
Cc: David Brown <caml-list@davidb.org>, Vovka <jove@newmail.ru>,
	"caml-list@inria.fr" <caml-list@inria.fr>
Subject: Re: [Caml-list] static class member....
Date: Wed, 6 Aug 2003 09:12:24 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.4.44.0308060901130.15452-100000@grace.speakeasy.net> (raw)
In-Reply-To: <20030806151051.GB29704@redhat.com>

Yes, it says in the language introduction (the part on objects) 

	Let-bindings within class definitions are evaluated before the object 
	is constructed

so using a class local let bound ref works if you want the member to 
be unique on a per class basis. If you'd like the counter to apply to a class 
and everything that inherits from it, then you use module level let's like so 

module Foo =
  struct
    let counter = ref 0

    class c =
      object
        method get () = !counter
        method bump () = incr counter
      end
  end;;

A non-orthogonality of the let within a class is that let module isn't 
permitted. Is there any reason it isn't? 

As a side advice to the OP, it would be worthwhile to avoid the OOP and just 
get used to the ML part of Caml first. 

-- Brian

On Wed, 6 Aug 2003, Richard Jones wrote:

> On Wed, Aug 06, 2003 at 07:51:48AM -0700, David Brown wrote:
> > On Wed, Aug 06, 2003 at 03:45:23PM +0100, Richard Jones wrote:
> > > On Wed, Aug 06, 2003 at 04:57:26PM +0400, Vovka wrote:
> > > > Hi!!!!
> > > > 
> > > > Could you help me please. I'm newbie in ocaml programming, i used to write 
> > > > programmes in C++ , so I've faced    difficulties in introducing  static 
> > > > class member(==a common member for all objects of the same class).  Can i 
> > > > handle it in ocaml? Thanks a lot. 
> > > 
> > > This is one way to do it, there might be other easier ways:
> > > 
> > > class foo =
> > >   let counter = ref 0 in
> > 
> > But this counter will be unique for each new instance of the class.
> 
> Not so. Run my code & you'll see it works.
> 
> Rich.
> 
> -- 
> Richard Jones. http://www.annexia.org/ http://freshmeat.net/users/rwmj
> Merjis Ltd. http://www.merjis.com/ - all your business data are belong to you.
> MAKE+ is a sane replacement for GNU autoconf/automake. One script compiles,
> RPMs, pkgs etc. Linux, BSD, Solaris. http://www.annexia.org/freeware/makeplus/
> 
> -------------------
> To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
> Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> 

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  reply	other threads:[~2003-08-06 16:12 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-08-06 12:35 [Caml-list] Unix.kill on Win32 James Scott
2003-08-06 12:57 ` [Caml-list] static class member Vovka
2003-08-06 14:45   ` Richard Jones
2003-08-06 14:51     ` David Brown
2003-08-06 15:10       ` Richard Jones
2003-08-06 16:12         ` brogoff [this message]
2003-08-06 17:43           ` Richard Jones
2003-08-06 18:11             ` David Brown
2003-08-06 18:30               ` William Lovas
2003-08-06 18:14             ` Nicolas Cannasse
2003-08-07  0:12           ` Jacques Garrigue
2003-08-07  5:20           ` james woodyatt
2003-08-07 17:02             ` brogoff
2003-08-07 21:53             ` John Max Skaller
2003-08-06 16:24         ` David Brown
2003-08-07  0:21 ` [Caml-list] Unix.kill on Win32 Jacques Garrigue
2003-08-07  0:41   ` Jacques Garrigue
2003-08-08 14:38 [Caml-list] static class member Arturo Borquez

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.44.0308060901130.15452-100000@grace.speakeasy.net \
    --to=brogoff@speakeasy.net \
    --cc=caml-list@davidb.org \
    --cc=caml-list@inria.fr \
    --cc=jove@newmail.ru \
    --cc=rich@annexia.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox