Thursday, November 1, 2012

Re: What do I need to read to understand g: and s: VIM variable prefixes?

On 31/10/12 21:02, Dotan Cohen wrote:
> On Wed, Oct 31, 2012 at 9:52 PM, donothing successfully
> <donothingsuccessfully@gmail.com> wrote:
>> On 31 October 2012 19:15, Dotan Cohen <dotancohen@gmail.com> wrote:
>>> […]
>>> #include <stdio.h>
>>> int foo();
>>>
>>> int main() {
>>> int x = 42;
>>> printf("%d", x);
>>> foo();
>>> return 0;
>>> }
>>>
>>> int foo() {
>>> printf("%d", x);
>>> }
>>> […]
>> Here x is a local variable of the function *main*.
>> I think the "global" keyword is more of a weirdism of PHP than
>> standard practise.
>> http://en.wikipedia.org/wiki/Global_variable#C_and_C.2B.2B
>>
>
> Exactly. However, there is no flow control outside of main(), so I
> don't account for variables declared outside of main(). If someone is
> declaring a variable in an area of the program with no flow control,
> then they are explicitly declaring their intentions that the variable
> will be global. In other words, it is not a surprise or a gotcha when
> the variable is available in a different scope.
>
>

In Vimscript, an interpreted language, there are no "declarations": any
command needs to be "executed" in order to have an effect. It is when
flow control goes through the :au, :map, :abbrev, :function or :command
command, for instance, that the autocommand, mapping, abbreviation,
function definition or user-command definition are stored in interpreter
memory; before that, Vim doesn't "know" anything about them. Similarly,
the type of a variable is set by the latest :let command affecting that
variable, you cannot "declare" a variable except by giving that variable
a value (possibly an empty value such as "", [] or {}).


Best regards,
Tony.
--
Vote for ME -- I'm well-tapered, half-cocked, ill-conceived and
TAX-DEFERRED!

--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

No comments: