Ruby - funções integradas
Como o módulo Kernel é incluído pela classe Object , seus métodos estão disponíveis em qualquer lugar no programa Ruby. Eles podem ser chamados sem um receptor (forma funcional). Portanto, são freqüentemente chamados de funções.
Sr. Não. | Métodos e Descrição |
---|---|
1 | abort Encerra o programa. Se uma exceção for levantada (ou seja, $! Não é nulo), sua mensagem de erro é exibida. |
2 | Array( obj) Retorna obj após convertê-lo em um array usando to_ary ou to_a. |
3 | at_exit {...} Registra um bloco para execução quando o programa termina. Semelhante à instrução END, mas a instrução END registra o bloco apenas uma vez. |
4 | autoload( classname, file) Registra um nome de classe de classe a ser carregado do arquivo na primeira vez que é usado. classname pode ser uma string ou um símbolo. |
5 | binding Retorna a variável atual e as ligações de método. O objeto Binding que é retornado pode ser passado para o método eval como seu segundo argumento. |
6 | block_given? Retorna verdadeiro se o método foi chamado com um bloco . |
7 | callcc {| c|...} Passa um objeto de continuação c para o bloco e executa o bloco. callcc pode ser usado para saída global ou construção de loop. |
8 | caller([ n]) Retorna a pilha de execução atual em uma matriz de strings no formato file: line . Se n for especificado, retorna as entradas da pilha do nível enésimo para baixo. |
9 | catch( tag) {...} Pega uma saída não local por um lance chamado durante a execução de seu bloco. |
10 | chomp([ rs = $/]) Retorna o valor da variável $_ with the ending newline removed, assigning the result back to $_. O valor da string de nova linha pode ser especificado com rs. |
11 | chomp!([ rs = $/]) Remove a nova linha de $ _, modificando a string no lugar. |
12 | chop Retorna o valor de $_ with its last character (one byte) removed, assigning the result back to $_. |
13 | chop! Remove o último caractere de $ _, modificando a string no local. |
14 | eval( str[, scope[, file, line]]) Executa str como código Ruby. A ligação na qual realizar a avaliação pode ser especificada com escopo . O nome do arquivo e o número da linha do código a ser compilado podem ser especificados usando arquivo e linha. |
15 | exec( cmd[, arg...]) Substitui o processo atual executando o comando cmd . Se vários argumentos forem especificados, o comando será executado sem expansão de shell. |
16 | exit([ result = 0]) Sai do programa, resultando em código de status retornado. |
17 | exit!([ result = 0]) Mata o programa, ignorando o tratamento de saída, como garantir , etc. |
18 | fail(...) Veja aumento (...) |
19 | Float( obj) Retorna obj após convertê-lo em um float. Objetos numéricos são convertidos diretamente; nil é convertido em 0,0; strings são convertidas considerando o prefixo 0x, 0b radix. O resto é convertido usando obj.to_f. |
20 | fork fork {...} Cria um processo filho. nil é retornado no processo filho e o ID do processo filho (inteiro) é retornado no processo pai. Se um bloco for especificado, ele será executado no processo filho. |
21 | format( fmt[, arg...]) Veja sprintf. |
22 | gets([ rs = $/]) Lê o nome do arquivo especificado na linha de comando ou uma linha da entrada padrão. A string do separador de registro pode ser especificada explicitamente com rs. |
23 | global_variables Retorna uma matriz de nomes de variáveis globais. |
24 | gsub( x, y) gsub( x) {...} Substitui todas as strings correspondentes a x em $_ with y. If a block is specified, matched strings are replaced with the result of the block. The modified result is assigned to $_. |
25 | gsub!( x, y) gsub!( x) {...} Executa a mesma substituição que gsub, exceto que a string é alterada no lugar. |
26 | Integer( obj) Retorna obj após convertê-lo em um inteiro. Objetos numéricos são convertidos diretamente; nil é convertido em 0; strings são convertidas considerando o prefixo 0x, 0b radix. O resto é convertido usando obj.to_i. |
27 | lambda {| x|...} proc {| x|...} lambda proc Converte um bloco em um objeto Proc . Se nenhum bloco for especificado, o bloco associado ao método de chamada é convertido. |
28 | load( file[, private = false]) Carrega um programa Ruby do arquivo . Ao contrário de require , ele não carrega bibliotecas de extensão. Se private for true , o programa é carregado em um módulo anônimo, protegendo assim o namespace do programa de chamada. |
29 | local_variables Retorna uma matriz de nomes de variáveis locais. |
30 | loop {...} Repete um bloco de código. |
31 | open( path[, mode = "r"]) open( path[, mode = "r"]) {| f|...} Abre um arquivo . Se um bloco for especificado, o bloco será executado com o fluxo aberto passado como argumento. O arquivo é fechado automaticamente quando o bloco termina. Se o caminho começar com um tubo |, a sequência a seguir será executada como um comando e o fluxo associado a esse processo será retornado. |
32 | p( obj) Exibe obj usando seu método inspect (frequentemente usado para depuração). |
33 | print([ arg...]) Imprime arg em $ defout . Se nenhum argumento for especificado, o valor de $ _ é impresso. |
34 | printf( fmt[, arg...]) Formata arg de acordo com fmt usando sprintf e imprime o resultado em $ defout . Para especificações de formatação, consulte sprintf para detalhes. |
35 | proc {| x|...} proc Veja lamda. |
36 | putc( c) Imprime um caractere na saída padrão ( $ defout ). |
37 | puts([ str]) Imprime string na saída padrão ( $ defout ). Se a string não terminar com uma nova linha, uma nova linha será anexada à string. |
38 | raise(...) fail(...) Gera uma exceção. Assume RuntimeError se nenhuma classe de exceção for especificada. Chamar raise sem argumentos em uma cláusula de resgate levanta novamente a exceção. Fazer isso fora de uma cláusula de resgate gera um RuntimeError sem mensagem .fail é um nome obsoleto para aumento. |
39 | rand([ max = 0]) Gera um número pseudoaleatório maior ou igual a 0 e menor que max. Se max não for especificado ou for definido como 0, um número aleatório será retornado como um número de ponto flutuante maior ou igual a 0 e menor que 1. srand pode ser usado para inicializar o fluxo pseudo-aleatório. |
40 | readline([ rs = $/]) Equivalente a gets, exceto que gera uma exceção EOFError ao ler EOF. |
41 | readlines([ rs = $/]) Retorna uma matriz de strings contendo os nomes de arquivos especificados como argumentos de linha de comando ou o conteúdo da entrada padrão. |
42 | require( lib) Carrega a biblioteca (incluindo bibliotecas de extensão) lib quando é chamada pela primeira vez. require não carregará a mesma biblioteca mais de uma vez. Se nenhuma extensão for especificada em lib , require tenta adicionar .rb, .so, etc., a ele. |
43 | scan( re) scan( re) {|x|...} Equivalente a $ _. Scan. |
44 | select( reads[, writes = nil[, excepts = nil[, timeout = nil]]]) Verifica se há mudanças no status de três tipos de entrada, saída e exceções de objetos IO que são passados como matrizes de objetos IO. nil é passado para argumentos que não precisam de verificação. É retornada uma matriz de três elementos contendo matrizes dos objetos IO para os quais houve mudanças de status. nil é retornado no tempo limite. |
45 | set_trace_func( proc) Define um manipulador para rastreamento. proc pode ser uma string ou um objeto proc . set_trace_func é usado pelo depurador e profiler. |
46 | sleep([ sec]) Suspende a execução do programa por segundos. Se sec não for especificado, o programa será suspenso para sempre. |
47 | split([ sep[, max]]) Equivalente a $ _. Split. |
48 | sprintf( fmt[, arg...]) format( fmt[, arg...]) Retorna uma string em que arg é formatado de acordo com fmt. As especificações de formatação são essencialmente as mesmas do sprintf na linguagem de programação C. Os especificadores de conversão (% seguido pelo especificador de campo de conversão) em fmt são substituídos pela string formatada do argumento correspondente. Uma lista de conversões arquivadas é fornecida abaixo na próxima seção. |
49 | srand([ seed]) Inicializa uma matriz de números aleatórios. Se a semente não for especificada, a inicialização será realizada usando a hora e outras informações do sistema para a semente. |
50 | String( obj) Retorna obj após convertê-lo em uma string usando obj.to_s. |
51 | syscall( sys[, arg...]) Chama uma função de chamada do sistema operacional especificada por number sys . Os números e o significado de sys dependem do sistema. |
52 | system( cmd[, arg...]) Executa cmd como uma chamada para a linha de comando. Se vários argumentos forem especificados, o comando será executado diretamente sem expansão de shell. Retorna verdadeiro se o status de retorno for 0 (sucesso). |
53 | sub( x, y) sub( x) {...} Substitui a primeira string correspondente a x em $ _ por y. Se um bloco for especificado, as strings correspondentes serão substituídas pelo resultado do bloco. O resultado modificado é atribuído a $ _. |
54 | sub!( x, y) sub!( x) {...} Executa a mesma substituição que sub, exceto que a string é alterada no lugar. |
55 | test( test, f1[, f2]) Executa vários testes de arquivo especificados pelo teste de caracteres . Para melhorar a legibilidade, você deve usar os métodos da classe File (por exemplo, File :: readable?) Em vez desta função. Uma lista de argumentos é fornecida abaixo na próxima seção. |
56 | throw( tag[, value = nil]) Salta para a função catch esperando com o símbolo ou tag string . value é o valor de retorno a ser usado pelo catch . |
57 | trace_var( var, cmd) trace_var( var) {...} Define o rastreamento de uma variável global. O nome da variável é especificado como um símbolo. cmd pode ser uma string ou objeto Proc. |
58 | trap( sig, cmd) trap( sig) {...} Define um manipulador de sinal. sig pode ser uma string (como SIGUSR1) ou um inteiro. SIG pode ser omitido do nome do sinal. O manipulador de sinais para o sinal EXIT ou o sinal número 0 é invocado antes do término do processo. |
59 | untrace_var( var[, cmd]) Remove o rastreamento de uma variável global. Se cmd for especificado, apenas esse comando será removido. |
Funções para Números
Aqui está uma lista de funções integradas relacionadas ao número. Eles devem ser usados da seguinte forma -
#!/usr/bin/ruby
num = 12.40
puts num.floor # 12
puts num + 10 # 22.40
puts num.integer? # false as num is a float.
Isso produzirá o seguinte resultado -
12
22.4
false
Sr. Não. | Métodos e Descrição |
---|---|
1 | n + num n - num n * num n / num Executa operações aritméticas: adição, subtração, multiplicação e divisão. |
2 | n % num Retorna o módulo de n. |
3 | n ** num Exponenciação. |
4 | n.abs Retorna o valor absoluto de n. |
5 | n.ceil Retorna o menor inteiro maior ou igual a n. |
6 | n.coerce( num) Retorna uma matriz contendo num e n, ambos possivelmente convertidos em um tipo que permite que sejam operados mutuamente. Usado na conversão automática de tipo em operadores numéricos. |
7 | n.divmod( num) Retorna uma matriz contendo o quociente e o módulo da divisão de n por num. |
8 | n.floor Retorna o maior inteiro menor ou igual a n. |
9 | n.integer? Retorna verdadeiro se n for um inteiro. |
10 | n.modulo( num) Retorna o módulo obtido dividindo n por num e arredondando o quociente com chão |
11 | n.nonzero? Retorna n se não for zero, caso contrário, nil. |
12 | n.remainder( num) Retorna o restante obtido pela divisão n de nume removendo decimais do quociente. oresult e n sempre tem o mesmo sinal. |
13 | n.round Retorna n arredondado para o número inteiro mais próximo. |
14 | n.truncate Retorna n como um número inteiro com decimais removidos. |
15 | n.zero? Retorna zero se n for 0. |
16 | n & num n | num n ^ num Operações bit a bit: AND, OR, XOR e inversão. |
17 | n << num n >> num Deslocamento à esquerda e à direita bit a bit. |
18 | n[num] Retorna o valor de numo bit do bit menos significativo, que é n [0]. |
19 | n.chr Retorna uma string contendo o caractere para o código do caractere n. |
20 | n.next n.succ Retorna o próximo inteiro após n. Equivalente a n + 1. |
21 | n.size Retorna o número de bytes na representação da máquina de n. |
22 | n.step( upto, step) {|n| ...} Repete o bloco de n para upto, incrementando por step cada vez. |
23 | n.times {|n| ...} Repete o bloco n vezes. |
24 | n.to_f Converte nem um número de ponto flutuante. A conversão de flutuação pode perder informações de precisão. |
25 | n.to_int Devoluções n após a conversão em número interger. |
Funções para Float
Sr. Não. | Métodos e Descrição |
---|---|
1 | Float::induced_from(num) Retorna o resultado da conversão de num em um número de ponto flutuante. |
2 | f.finite? Retorna verdadeiro se f não for infinito e f.nan for falso. |
3 | f.infinite? Retorna 1 se f for infinito positivo, -1 se infinito negativo ou nulo se qualquer outra coisa. |
4 | f.nan? Retorna verdadeiro se f não for um número de ponto flutuante IEEE válido. |
Funções para matemática
Sr. Não. | Métodos e Descrição |
---|---|
1 | atan2( x, y) Calcula a tangente do arco. |
2 | cos( x) Calcula o cosseno de x. |
3 | exp( x) Calcula uma função exponencial (e elevado à potência de x). |
4 | frexp( x) Retorna uma matriz de dois elementos contendo a fração nominalizada e o expoente de x. |
5 | ldexp( x, exp) Retorna o valor de x vezes 2 à potência de exp. |
6 | log( x) Calcula o logaritmo natural de x. |
7 | log10( x) Calcula o logaritmo de base 10 de x. |
8 | sin( x) Calcula o seno de x. |
9 | sqrt( x) Retorna a raiz quadrada de x. x deve ser positivo. |
10 | tan( x) Calcula a tangente de x. |
Especificador de campo de conversão
A função sprintf (fmt [, arg ...]) e format (fmt [, arg ...]) retorna uma string na qual arg é formatado de acordo com fmt. As especificações de formatação são essencialmente as mesmas do sprintf na linguagem de programação C. Os especificadores de conversão (% seguido pelo especificador de campo de conversão) em fmt são substituídos pela string formatada do argumento correspondente.
Sr. Não. | Especificador e descrição |
---|---|
1 | b Inteiro binário |
2 | c Personagem único |
3 | d,i Número inteiro decimal |
4 | e Notação exponencial (por exemplo, 2.44e6) |
5 | E Notação exponencial (por exemplo, 2.44E6) |
6 | f Número de ponto flutuante (por exemplo, 2,44) |
7 | g use% e se o expoente for menor que -4,% f caso contrário |
8 | G use% E se o expoente for menor que -4,% f caso contrário |
9 | o Octal inteiro |
10 | s String ou qualquer objeto convertido usando to_s |
11 | u Inteiro decimal sem sinal |
12 | x Número inteiro hexadecimal (por exemplo, 39ff) |
13 | X Número inteiro hexadecimal (por exemplo, 39FF) |
A seguir está o exemplo de uso -
#!/usr/bin/ruby
str = sprintf("%s\n", "abc") # => "abc\n" (simplest form)
puts str
str = sprintf("d=%d", 42) # => "d=42" (decimal output)
puts str
str = sprintf("%04x", 255) # => "00ff" (width 4, zero padded)
puts str
str = sprintf("%8s", "hello") # => " hello" (space padded)
puts str
str = sprintf("%.2s", "hello") # => "he" (trimmed by precision)
puts str
Isso produzirá o seguinte resultado -
abc
d = 42
00ff
hello
he
Argumentos da função de teste
O teste de função (teste, f1 [, f2]) executa um dos seguintes testes de arquivo especificados pelo teste de caractere . Para melhorar a legibilidade, você deve usar os métodos da classe File (por exemplo, File :: readable?) Em vez desta função.
Sr. Não. | Argumento e Descrição |
---|---|
1 | ?r F1 é legível pelo uid efetivo do chamador? |
2 | ?w O f1 é gravável pelo uid efetivo do chamador? |
3 | ?x É f1 executável pelo uid efetivo do chamador? |
4 | ?o F1 pertence ao uid efetivo do chamador? |
5 | ?R F1 é legível pelo uid real do chamador? |
6 | ?W O f1 é gravável pelo uid real do chamador? |
7 | ?X É f1 executável pelo uid real do chamador? |
8 | ?O F1 pertence ao uid real do chamador? |
9 | ?e F1 existe? |
10 | ?z F1 tem comprimento zero? |
11 | ?s Tamanho do arquivo de f1 (nulo se 0) |
12 | ?f F1 é um arquivo normal? |
13 | ?d F1 é um diretório? |
14 | ?l F1 é um link simbólico? |
15 | ?p F1 é um pipe nomeado (FIFO)? |
16 | ?S F1 é um soquete? |
17 | ?b F1 é um dispositivo de bloco? |
18 | ?c F1 é um dispositivo de caractere? |
19 | ?u F1 tem o bit setuid definido? |
20 | ?g F1 tem o bit setgid definido? |
21 | ?k F1 tem o bit sticky definido? |
22 | ?M Hora da última modificação para f1. |
23 | ?A Última hora de acesso para f1. |
24 | ?C Tempo de mudança do último inode para f1. |
Sr. Não. | Argumento e Descrição |
---|---|
1 | ?= Os tempos de modificação de f1 e f2 são iguais? |
2 | ?> O tempo de modificação de f1 é mais recente do que f2? |
3 | ?< O tempo de modificação de f1 é mais antigo que f2? |
4 | ?- F1 é um link físico para f2? |
A seguir está o exemplo de uso. Assumindo que main.rb existe com permissões de leitura, gravação e não execução -
#!/usr/bin/ruby
puts test(?r, "main.rb" ) # => true
puts test(?w, "main.rb" ) # => true
puts test(?x, "main.rb" ) # => false
Isso produzirá o seguinte resultado -
true
false
false